TreeView 数据绑定及选中命令处理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TreeView 数据绑定及选中命令处理相关的知识,希望对你有一定的参考价值。
昨天接近下班,一个群里面的网友,问treeView绑定后 选中命令怎么来处理,怎么没有效果,而且用MVVM的方式来写;快下班了本来想远程帮他看下,结果就说写个Demo给他看;再加上选中传参;
下面分享下代码:
1 <TreeView Height="264" x:Name="tvProperties" Width="220" ItemsSource="{Binding MyProperty}"><!--数据源--> 2 <i:Interaction.Triggers> 3 <i:EventTrigger EventName="SelectedItemChanged"> 4 <i:InvokeCommandAction Command="{Binding DataContext.SelectComamnd, 5 RelativeSource={RelativeSource AncestorType=Window, AncestorLevel=1, Mode=FindAncestor}}" CommandParameter="{Binding SelectedItem, ElementName=tvProperties}"/><!--选中传值--> 6 </i:EventTrigger> 7 </i:Interaction.Triggers> 8 <TreeView.ItemContainerStyle> 9 <Style TargetType="{x:Type TreeViewItem}"> 10 <Setter Property="IsExpanded" Value="{Binding IsExpanded}"></Setter> 11 </Style> 12 </TreeView.ItemContainerStyle> 13 <TreeView.ItemTemplate> 14 15 <HierarchicalDataTemplate ItemsSource="{Binding Path=Children}"><!--节点--> 16 17 <StackPanel Orientation="Horizontal"> 18 19 <Image VerticalAlignment="Center" Source="{Binding Icon}" Width="16" Height="16" Margin="0,0,2,2"></Image><!--绑定值--> 20 21 <TextBlock VerticalAlignment="Center" Name="nodeName" Text="{Binding Name}"></TextBlock> 22 23 <Image VerticalAlignment="Center" Source="{Binding EditIcon}" Margin="2,0,0,0"></Image> 24 25 <StackPanel.ToolTip> 26 27 <TextBlock VerticalAlignment="Center" Text="{Binding Name}" TextWrapping="Wrap" MaxWidth="200" ></TextBlock> 28 29 </StackPanel.ToolTip> 30 31 </StackPanel> 32 33 </HierarchicalDataTemplate> 34 35 </TreeView.ItemTemplate> 36 37 </TreeView>
这个绑定完了 咱们来看看数据:
1 private List<PropertyNodeItem> myVar; 2 /// <summary> 3 /// 绑定值 4 /// </summary> 5 public List<PropertyNodeItem> MyProperty 6 { 7 get { return myVar ?? (myVar = new List<PropertyNodeItem>()); } 8 set 9 { 10 myVar = value; 11 this.OnPropertyChanged("MyProperty"); 12 } 13 } 14 /// <summary> 15 /// 产生数据 16 /// </summary> 17 public MainViewModels() 18 { 19 for (int i = 0; i < 10; i++) 20 { 21 PropertyNodeItem aa = new PropertyNodeItem() 22 { 23 Name="测试"+i, 24 Children = new List<PropertyNodeItem>() { new PropertyNodeItem(){Name="测试1"+i+i} } 25 }; 26 MyProperty.Add(aa); 27 } 28 }
接着命令代码:
1 private RelayCommand _selectCommand; 2 /// <summary> 3 /// 事件命令 4 /// </summary> 5 public RelayCommand SelectComamnd 6 { 7 get { return _selectCommand ?? (_selectCommand = new RelayCommand(OnSelectComamnd)); } 8 set { _selectCommand = value; } 9 } 10 /// <summary> 11 /// 选中事件执行函数 12 /// </summary> 13 /// <param name="paramter">参数</param> 14 private void OnSelectComamnd(object paramter) 15 { 16 17 }
完毕~~~
以上是关于TreeView 数据绑定及选中命令处理的主要内容,如果未能解决你的问题,请参考以下文章
WPF TreeView IsExpanded 绑定不上的问题