0

我有一个 MVVM WPF 应用程序,它基本上想成为配电网络的单线图设计器。

我有一个必须包含变压器、断路器、线路和电缆的画布。

我的大问题是设计......我该如何开始?

我想到了一个 DesignerView,DesignerViewModel 包含一个 IDesignerItemViewModel 的 ObservableCollection,它是我所有元素的基类。但在这种情况下,我必须使用 ItemsControl 将画布的内容绑定到我的集合,但优点是我不必为每个元素创建用户控件,但我会用 DataTemplate 解决大部分问题(我想) . 每个元素视图模型都包含一个指向模型的链接,该模型保存在我维护我的逻辑树的存储库中。

关于如何进行的任何提示,我查看了许多 DiagramCanvas 示例,但所有这些都使用简单的项目,最像简单的矩形......

4

2 回答 2

0

毛罗

一个不错的方法是使 ItemsControl 的 ItemsPanel 成为 Canvas 并将 DataTemplate 中的 UI 元素坐标绑定到 ViewModel 的属性。

尽管在我看来这可能行不通,因为 DataTemplate 的内容不会放在 Canvas 上,而是放在 ItemPresenter 中。因此,也许您可​​以通过基于定义元素类型的某些属性切换触发器中的模板来创建一个可以可视化任何元素的控件。

然后,您可以将 Canvas 的 Children 绑定到这些控件的集合,或者在代码隐藏中以程序方式填充 Canvas.Children 集合。

于 2009-04-23T18:51:19.307 回答
0

我即将做类似的事情。我有 Itemscontrol,它的布局为 CANVAS。我的项目是 ShapeItemViewModels,它具有来自 Type Usercontrol 的属性 PayLoad。我的视图有一个边框和一个绑定到我的属性有效负载的 ContentPresenter。然后我根据我的需要注入我的有效载荷。这让我可以随心所欲地组装我的物品......不过我有一个问题......那就是连接/关系,请参见我的线程:

Silverlight MVVM 中的图表 - 连接形状

于 2010-03-29T11:08:48.517 回答