使用 MVVM 模式,我想将线条和文本写入画布,就像矢量 CAD 应用程序一样。在研究这一点时,我得出的结论是,我需要使用 ItemsControl 和 ItemsPanelTemplate 声明为 Canvas,如
<ItemsControl>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
我还发现我需要在 ItemTemplate 中放一些东西(不确定是什么),就像这样。. .
<ItemsControl.ItemTemplate>
<DataTemplate>
<!-- Don't know what goes here -->
</DataTemplate>
</ItemsControl.ItemTemplate>
我的问题
有人可以建议我在 DataTemplate 中放入什么,以便我可以绑定到我的 ViewModel 并让 ViewModel 绘制文本(任何旋转、任何字体等)、线条、弧线、贝塞尔曲线、形状 - - - 根据绑定集合中的各种元素,我需要什么?
我的猜测是它应该是一个 System.Windows.FrameworkTemplate,但我仍在试图弄清楚如何使用它,而且进展缓慢。或者可能是 ContentControl 和 Presenter?
参考
使用 ItemsControl 时如何将 X/Y 位置转换为 Canvas Left/Top 属性
如何在 ItemsControl 中定位 ViewModel
是否可以在 XAML 中绑定 Canvas 的 Children 属性? 注意:请参阅此问题的第二个答案。