昨天接近下班,一个群里面的网友,问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>