简体   繁体   中英

Is there a way to pass treeViewItem name as command parameter?

I am creating a simple treeview with binding to a collection. What I want is to display full info about the collection element in a listview when treeview element is selected. Similar to windows file explorer. The problem is I cannot bind selected treeviewitem to a Command.

Tried binding command to SelectedItemChanged event with a parameter of treeviewitem name - didn`t work. Tried it with a simple event - gets cumbersome and breaks MVVM pattern. There must be an elegant way to solve this since what I am trying to do is really widespread in different apps.

<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>

I would like to pass treeviewitem name as command parameter instead of??? in my code so selected treeview item will be identified by name so I can get respective info and bind it to listview.

Solved it using RelativeSource.

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

Works fine.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM