C# WPF :从一个Treeview控件中往一个列表添加子节点,当列表中已经存在该子节点时,(见问题补充)
当列表中已经存在该子节点时,在Treeview列表中该子节点要显示为灰色,表示不能对其进行操作,该怎么做?请各位大侠指教,谢谢!!!...
当列表中已经存在该子节点时,在Treeview列表中该子节点要显示为灰色,表示不能对其进行操作,该怎么做?请各位大侠指教,谢谢!!!
展开
3个回答
展开全部
采用mvvm设计模式:两个treeview的Itemssource应该绑定各自的如ObservableCollcetion<DataClass>这样的集合。可以在DataClass中新增一个用于表示是否变灰的bool属性。在样式中使用触发器,当bool值为true,就变灰。然后当有个Treeview里面的Item添加到目的地列表中的时候,将该Item种的DataClass的是否变灰属性设置为true即可实现你要的功能。
记得DataClass实现接口INotifyPropertyChanged
其他人的回答你完全可以忽略了。因为其他人的回答把wpf程序硬是做成了winform。如果你用别人的方法,你的程序和winform做的,asp.net做的没啥区别了。也没有利用到wpf的特点。
记得DataClass实现接口INotifyPropertyChanged
其他人的回答你完全可以忽略了。因为其他人的回答把wpf程序硬是做成了winform。如果你用别人的方法,你的程序和winform做的,asp.net做的没啥区别了。也没有利用到wpf的特点。
展开全部
UI层与逻辑层要尽可能地剥离(解耦)。
Routed Event和Command比Event的耦合度要低。
UI层与逻辑层的“血管”是数据关联(Data Binding)。
尽量不要试图通过UI层去拿数据或者操作数据,而是直接去操作数据源。例如:
想对一个TreeView里的结点排序,不应该是对TreeViewItem排序,而是应该对TreeView的DataSource排序
TreeView的Item是CheckBox,想把这些CheckBox认为选中,不应该从UI下手,而是把与CheckBox相关联的数据设为true
想得到ListView(内嵌GridView)中的数据,不要使用VisualTree去找来找去,而是应该去访问ListView的DataSource
数据关联的核心思想是:数据决定UI。UI的作用是Update数据。比起Windows Form,WPF的UI作用淡化了很多。
Routed Event和Command比Event的耦合度要低。
UI层与逻辑层的“血管”是数据关联(Data Binding)。
尽量不要试图通过UI层去拿数据或者操作数据,而是直接去操作数据源。例如:
想对一个TreeView里的结点排序,不应该是对TreeViewItem排序,而是应该对TreeView的DataSource排序
TreeView的Item是CheckBox,想把这些CheckBox认为选中,不应该从UI下手,而是把与CheckBox相关联的数据设为true
想得到ListView(内嵌GridView)中的数据,不要使用VisualTree去找来找去,而是应该去访问ListView的DataSource
数据关联的核心思想是:数据决定UI。UI的作用是Update数据。比起Windows Form,WPF的UI作用淡化了很多。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的意思是换图标不知道怎么换,还是怎么设置该节点不能操作啊?
设置图标就是把节点的图标进行再次的设置。因为一般都是有默认的。
至于设置节点不能操作,你可以在节点的操作逻辑里面判断,如果不能操作,直接退出或者给个提示就行了。
设置图标就是把节点的图标进行再次的设置。因为一般都是有默认的。
至于设置节点不能操作,你可以在节点的操作逻辑里面判断,如果不能操作,直接退出或者给个提示就行了。
追问
要怎么判断在目标列表中已经有存在Treeview中的某一节点,并把Treeview中的该节点弄成灰色的?因为我的点比较多,添加的时候要避免重复,弄成灰色的点不能添加,其他的点还是可以正常添加,不要直接退出和提示。
追答
你要先把这个treeview的图标指向一个imagelist,然后你在向里面加节点的时候,根据节点的需要,设置其图标索引就可以将节点的图标设置为不同的。
至于有的不能添加,那还是要在后面的逻辑里面控制。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询