有没有一种方法可以将treeViewItem名称作为命令参数传递?

时间:2019-10-31 09:42:40

标签: c# xaml treeview

我正在创建一个绑定到集合的简单树视图。我想要的是在选择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。

1 个答案:

答案 0 :(得分:0)

使用RelativeSource解决了它。

CommandParameter =“ {Binding Path = SelectedItem,RelativeSource = {RelativeSource Mode = FindAncestor,AncestorType = {x:Type TreeView}}}”“

很好。