我正在创建一个绑定到集合的简单树视图。我想要的是在选择treeview元素时在listview中显示有关collection元素的完整信息。类似于Windows文件资源管理器。问题是我无法将选定的treeviewitem绑定到Command。
尝试使用Treeviewitem名称参数将命令绑定到SelectedItemChanged事件-无效。 尝试了一个简单的事件-变得麻烦,并破坏了MVVM模式。必须解决这一问题,因为我要尝试做的事确实在不同的应用程序中广泛存在。
<TreeView Grid.Row="1" Background="AliceBlue" ItemsSource="{Binding TopPanelNodes}" Name="TopTreeView" SourceUpdated="TopTreeView_SourceUpdated" >
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=Nodes}">
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal" IsEnabled="False">
<TextBlock Text="{Binding Name}" >
</TextBlock>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectedItemChanged">
<i:InvokeCommandAction Command="{Binding UpdateInspectorCommand }" CommandParameter=??? />
</i:EventTrigger>
</i:Interaction.Triggers>
</TreeView>
我想将treeviewitem名称作为命令参数而不是???在我的代码中,因此所选的treeview项将通过名称进行标识,因此我可以获得各自的信息并将其绑定到listview。
答案 0 :(得分:0)
使用RelativeSource解决了它。
CommandParameter =“ {Binding Path = SelectedItem,RelativeSource = {RelativeSource Mode = FindAncestor,AncestorType = {x:Type TreeView}}}”“
很好。