繁体   English   中英

MVVM - TreeView 中的 select 项目并使用绑定在 ListView 上显示其属性

[英]MVVM - select item in TreeView and show its properties on a ListView using binding

我是 MVVM 的新手。 我创建了一个 TreeView 具有 3 个级别的层次结构:level1:Program,level2:Action,level3:Position。 我还在 TreeView 下创建了一个 ListView(参见 xaml)。 现在 ListView 的项目没有绑定到任何东西(名称“Type”、“Speed”只是占位符。)

当从 TreeView 中的 level2 (Action) 中选择一个项目时,我希望看到它的属性(类型、速度)出现在下面的 ListView 中。

有没有办法通过仅更改视图(xaml)而不使用 ViewModel 中的代码来做到这一点? 也许有一种方法可以使用某种绑定,当按下 TreeView 中的项目时可以更改?

xaml(型号):

       <TreeView 
            Grid.Row="0"
            x:Name="MainTreeView"
            HorizontalAlignment="Stretch"
            Margin="10" 
            VerticalAlignment="Stretch"
            ItemsSource="{Binding Programs}">
            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding Actions}" DataType="{x:Type VM:ProgramVM}">
                    <Label Content="{Binding ProgramName}"/>
                    <HierarchicalDataTemplate.ItemTemplate>
                        <HierarchicalDataTemplate ItemsSource="{Binding Poses}" DataType="{x:Type VM:ActionVM}">
                            <Label Content="{Binding Actiontype}"/>
                            <HierarchicalDataTemplate.ItemTemplate>
                                <DataTemplate DataType="{x:Type VM:PositionVM}">
                                    <Label Content="{Binding PosName}"/>
                                </DataTemplate>
                            </HierarchicalDataTemplate.ItemTemplate>
                        </HierarchicalDataTemplate>
                    </HierarchicalDataTemplate.ItemTemplate>
                </HierarchicalDataTemplate>

            </TreeView.ItemTemplate>
        </TreeView>
        <ListView Grid.Row="1" Margin="10" Name="lvUsers">
            <ListView.View>
                <GridView>

                    <GridViewColumn Header="Type" Width="100" DisplayMemberBinding="{Binding Type}" />
                    <GridViewColumn Header="Speed" Width="100" DisplayMemberBinding="{Binding Speed}" />
                </GridView>
            </ListView.View>
        </ListView> 

这是 WPF 中的 treeview 的一个众所周知的问题。 您必须为树中的每个 object 创建一个“已选择”属性,以便您知道用户选择了什么,然后您可以在列表视图中显示选定的 object。 自从我玩 treeview 以来已经有一段时间了,但这里有一些我认为过去对我有帮助的链接。

数据绑定到 WPF Treeview 中的 SelectedItem

WPF MVVM TreeView

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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