zoukankan      html  css  js  c++  java
  • TreeView 数据绑定及选中命令处理

    昨天接近下班,一个群里面的网友,问treeView绑定后  选中命令怎么来处理,怎么没有效果,而且用MVVM的方式来写;快下班了本来想远程帮他看下,结果就说写个Demo给他看;再加上选中传参;

    下面分享下代码:

     1 <TreeView Height="264" x:Name="tvProperties"  Width="220" ItemsSource="{Binding MyProperty}"><!--数据源-->
     2             <i:Interaction.Triggers>
     3                 <i:EventTrigger EventName="SelectedItemChanged">
     4                     <i:InvokeCommandAction Command="{Binding DataContext.SelectComamnd,
     5                             RelativeSource={RelativeSource AncestorType=Window, AncestorLevel=1,  Mode=FindAncestor}}" CommandParameter="{Binding SelectedItem, ElementName=tvProperties}"/><!--选中传值-->
     6                 </i:EventTrigger>
     7             </i:Interaction.Triggers>
     8             <TreeView.ItemContainerStyle>
     9                 <Style TargetType="{x:Type TreeViewItem}">
    10                     <Setter Property="IsExpanded" Value="{Binding IsExpanded}"></Setter>
    11                 </Style>
    12             </TreeView.ItemContainerStyle>
    13             <TreeView.ItemTemplate>
    14 
    15                 <HierarchicalDataTemplate  ItemsSource="{Binding Path=Children}"><!--节点-->
    16 
    17                     <StackPanel Orientation="Horizontal">
    18 
    19                         <Image VerticalAlignment="Center" Source="{Binding Icon}" Width="16" Height="16" Margin="0,0,2,2"></Image><!--绑定值-->
    20 
    21                         <TextBlock VerticalAlignment="Center" Name="nodeName" Text="{Binding Name}"></TextBlock>
    22 
    23                         <Image VerticalAlignment="Center" Source="{Binding EditIcon}" Margin="2,0,0,0"></Image>
    24 
    25                         <StackPanel.ToolTip>
    26 
    27                             <TextBlock VerticalAlignment="Center" Text="{Binding Name}" TextWrapping="Wrap" MaxWidth="200" ></TextBlock>
    28 
    29                         </StackPanel.ToolTip>
    30 
    31                     </StackPanel>
    32 
    33                 </HierarchicalDataTemplate>
    34 
    35             </TreeView.ItemTemplate>
    36           
    37         </TreeView>
    View Code

    这个绑定完了 咱们来看看数据:

     1    private List<PropertyNodeItem> myVar;
     2         /// <summary>
     3         /// 绑定值
     4         /// </summary>
     5         public List<PropertyNodeItem> MyProperty
     6         {
     7             get { return myVar ?? (myVar = new List<PropertyNodeItem>()); }
     8             set
     9             {
    10                 myVar = value;
    11                 this.OnPropertyChanged("MyProperty");
    12             }
    13         }
    14         /// <summary>
    15         /// 产生数据
    16         /// </summary>
    17        public  MainViewModels()
    18        {
    19            for (int i = 0; i < 10; i++)
    20            {
    21                PropertyNodeItem aa = new PropertyNodeItem()
    22                {
    23                    Name="测试"+i,
    24                    Children = new List<PropertyNodeItem>() {  new PropertyNodeItem(){Name="测试1"+i+i} }
    25                };
    26                MyProperty.Add(aa);
    27            }
    28        }
    ViewModel Code

    接着命令代码:

     1     private RelayCommand _selectCommand;
     2        /// <summary>
     3        /// 事件命令
     4        /// </summary>
     5        public RelayCommand SelectComamnd
     6        {
     7            get { return _selectCommand ?? (_selectCommand = new RelayCommand(OnSelectComamnd)); }
     8            set { _selectCommand = value; }
     9        }
    10        /// <summary>
    11        /// 选中事件执行函数
    12        /// </summary>
    13        /// <param name="paramter">参数</param>
    14        private void OnSelectComamnd(object paramter)
    15        {
    16 
    17        }
    ViewModel Code

    完毕~~~

  • 相关阅读:
    推荐前端开发使用的服务器环境开源项目 D2Server 可替代Apache
    JavaScript正则表达式的坑很深
    NodeJS + Sequelize + Mysql + Vue + Bootstrap
    wampserver使用过程中遇到的问题及相关配置
    生成解决方案时,无法导入以下密钥文件
    使用Image.GetThumbnailImage 方法返回缩略图
    C#操作xml文件进行增、删、改
    MessageBox.Show()时MessageBoxIcon的显示
    通过反射获取对象属性、属性的值,设置对象属性的值
    常用文档处理技巧
  • 原文地址:https://www.cnblogs.com/D-LuFei/p/5845113.html
Copyright © 2011-2022 走看看