zoukankan      html  css  js  c++  java
  • WPF中TreeView控件SelectedItemChanged方法的MVVM绑定

    问题描述:左侧treeview控件中点击不同类别的节点时,右侧的页面会显示不同的权限。比如对于My Publications,拥有Modify和Delete两种权限,对于My Subscriptions,只拥有Unsubscribe的权限。

     

     我想到的办法是将权限绑定到TreeView控件的SelectedItemChanged方法,也就是说点击My Publications下面的子节点时,Modify和Delete两个Button控件是可见的,点击My Subscriptions下面的子节点时,Unsubscribe这个Button控件是可见的。

    对于SelectedItemChanged使用MVVM绑定,使用到了System.Windows.Interactivity程序集。

    <TreeView Name="treeview" Grid.Column="0" ItemsSource="{Binding Path=Resources}">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="SelectedItemChanged">
                        <i:InvokeCommandAction Command="{Binding Path=SelectedItemChangedCommand}" 
                                               CommandParameter="{Binding ElementName=treeview, Path=SelectedItem}"/>
                    </i:EventTrigger>
                </i:Interaction.Triggers>
                <TreeView.ItemTemplate>
                    <HierarchicalDataTemplate DataType="{x:Type local:TreeNode}" ItemsSource="{Binding Path=ChildNodes}">
                        <Label Content="{Binding Path=NodeName}"/>
                    </HierarchicalDataTemplate>
                </TreeView.ItemTemplate>
            </TreeView>
    XAML代码

    注:需要引用System.Windows.Interactivity程序集

    xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"

    将SelectedItemChanged绑定到了SelectedItemChangedCommand方法,且传递的方法参数是treeview的SelectedItem。

    整个项目的代码:

    https://github.com/Larissa1990/WPF_TreeView_SelectedItemChanged

    注:为了让界面看起来更漂亮,我使用了MahApps.Metro,不知道为什么,在引用System.Windows.Interactivity程序集时,先引用的4.0版本,但是没有办法加载进来。后来改成了3.5版本,可以成功加载,但是其中没有Command属性,后又改成4.0版本,竟然可以成功加载了。

    如果有更好的实现方法,请一定告诉我,谢谢~

  • 相关阅读:
    linux advancing program signal [copy]
    advacing lnux program zombie process [copy]
    Devpress.XtraGrid.GridControl 笔记(转载)
    嵌入别的程序到winform(C#)
    GridControl控件使用小结
    .net 时间类型的一小bug ToShortDateString()
    gridControl repositoryItemLookUpEdit控件使用
    .net架构的最后思考(箴言)
    VS项目引用,无法更新
    关于ZendOptimizer和wamp的phpmyadmin冲突问题
  • 原文地址:https://www.cnblogs.com/larissa-0464/p/13186486.html
Copyright © 2011-2022 走看看