我是MVVM和WPF树视图的新手。我做了一些研究,并在MVVM和this以及this上阅读了Josh Smith的文章。
我认为在WPF中创建树视图没有问题。事情在我的应用程序上,左侧面板是树视图,右侧面板将显示所选树视图节点的一些属性,用户可以单击按钮编辑属性并将其保存到数据源(并且可能会影响树视图项目)。此外,用户可以添加/删除子节点/孙子节点。
我似乎找不到使用MVVM实现此任何文章/示例。
我目前正在考虑在子节点和孙子节点的视图模型中,我将添加一个指向Usercontrol的公共属性。右侧面板将绑定到树视图的选定项目的Usercontrol。问题是,当用户添加子节点/子节点时,右侧面板将用于让用户填写信息并保存。我不确定它是否会影响绑定。
编辑树节点属性等其他问题意味着将节点的所有子节点信息复制到新节点,并从树中删除旧节点并将新节点添加到树中?
有人能指出我关于类似实施的任何好文章,或者对我应该注意的问题大致提出一些想法吗?
非常感谢你。 安吉拉
答案 0 :(得分:2)
很大程度上取决于你的设置,但这是我之前使用的方式。
请注意,您可能需要 ChildPropertyChanged 事件类型的事物(我将其命名为),以将树中的更改冒泡到树的根目录。
我创建了一个包含以下内容的ViewModel:
在视图中:
在AddCommand中:
在ViewModel中
在视图中
在EditCommand中:
在UpdateCommand中:
在Viewmodel中
在DeleteCommand中:
我发现在Node的ViewModel上实现IEditableObject非常有用。
使用此界面的方法,您可以添加取消按钮以反转EditCommand。通过将State属性添加到节点的ViewModel(New,Modified,Deleted),您可以跟踪更改,知道要发送到模型/数据库的更新,并且可以将View绑定到它以显示/隐藏元素。