Wpf 向画布添加形状。如何绑定到虚拟机
很抱歉标题有点模糊,但我想不出更好的了 为了便于讨论,假设我正在开发一个简单的绘图应用程序,用户只需单击并拖动鼠标即可绘制一条线(我并不是在开发它,只是为了保持它的简单性) 我有一个自定义形状的线绘制。现在,我想根据需要向视图中添加新行,但我想通过视图模型上的数据绑定使用Wpf 向画布添加形状。如何绑定到虚拟机,wpf,mvvm,shapes,Wpf,Mvvm,Shapes,很抱歉标题有点模糊,但我想不出更好的了 为了便于讨论,假设我正在开发一个简单的绘图应用程序,用户只需单击并拖动鼠标即可绘制一条线(我并不是在开发它,只是为了保持它的简单性) 我有一个自定义形状的线绘制。现在,我想根据需要向视图中添加新行,但我想通过视图模型上的数据绑定使用ObservableCollection属性来实现这一点。通常我会使用ItemsControl。当然,ItemsControl会自动定位它的项目,这不是我想要的 有人知道怎么做吗?是否有办法禁用项控件的布局功能?您可以更改项控件
ObservableCollection
属性来实现这一点。通常我会使用ItemsControl
。当然,ItemsControl
会自动定位它的项目,这不是我想要的
有人知道怎么做吗?是否有办法禁用
项控件的布局功能?您可以更改项控件的项面板
,使其使用画布
而不是堆栈面板
来保存其项,然后使用ItemContainerStyle
将Canvas.Top
和Canvas.Left
属性绑定到数据对象以定位它们
<ItemsControl ItemsSource="{Binding MyCollection}">
<!-- ItemsPanelTemplate -->
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<!-- ItemContainerStyle -->
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Canvas.Top" Value="{Binding Y}" />
<Setter Property="Canvas.Left" Value="{Binding X}" />
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
我有一篇关于的博客文章,详细解释了ItemsControl
的工作原理