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>

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

 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

完毕~~~

时间: 2024-11-09 03:19:45

TreeView 数据绑定及选中命令处理的相关文章

WPF MVVM TreeView 实现 右键选中 右键菜单

1.非MVVM模式:下载源代码WpfApplication1.zip <TreeView Height="200" PreviewMouseRightButtonDown="TreeViewItem_PreviewMouseRightButtonDown" HorizontalAlignment="Left" Margin="12,0,0,0" Name="treeView1" VerticalAli

wpf treeview 数据绑定 递归绑定节点

1.先上效果 将所有节点加入ComboBox数据源,在ComboBox中选择时下方Treeview显示该节点下的子节点. 1.xaml文件,将以下代码加入界面合适位置 1 <StackPanel> 2 <StackPanel Margin="10"> 3 <Label Content="选择组节点:"></Label> 4 <ComboBox MaxDropDownHeight="100" N

TreeView树Checkbox选中问题

//向上选中所有父节点 function setParentState(objNode) { var objParentDiv = WebForm_GetParentByTagName(objNode, "div"); if (objParentDiv == null || objParentDiv == "undefined") return; var divID = objParentDiv.getAttribute("ID"); var p

kendo treeview checkbox初始化选中问题,没解决,暂时记录下

想做带有checkbox的tree,由于项目一直用kendo ui for mvc,感觉 牛逼的kendo肯定有tree.结果碰到了选中的问题. 无法根据后台传来的IsChecked字段来设置  tree的选中状态.暂时不知道原因. 后台 接口 #region 地区 tree public JsonResult GetAreasTree(int? id) { //id = id.GetValueOrDefault(); //List<Area> allAreas = _commonServic

C#WinForm treeview控件 选中一个根节点为其添加子节点

1 UI 2 代码 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10 11 na

winform中treeview中节点选中的技巧

我想实现譬如选择某子节点的时候,父节点会自动选中,如果选择父节点,子节点会全部选中,如果子节点全部不选,父节点也要不选. 贴代码 private void tvwMenu_AfterCheck(object sender, TreeViewEventArgs e) { if (e.Action == TreeViewAction.ByMouse) { SoftMenu menu = e.Node.Tag as SoftMenu; if (menu.IsLast == 2) { if (e.Nod

WPF命令(Command)介绍、命令和数据绑定集成应用

要开始使用命令,必须做三件事: 一:定义一个命令 二:定义命令的实现 三:为命令创建一个触发器 WPF中命令系统的基础是一个相对简单的ICommand的接口,代码如下: public interface ICommand { event EventHandler CanExecuteChanged; bool CanExecute(object parameter); void Execute(object parameter); } CanExecute用于确定命令是否处于可执行的状态.典型的

WPF中TreeView控件数据绑定和后台动态添加数据

数据绑定: TreeView数据绑定需要使用层次结构数据模板(HierarchicalDataTemplate)来显示分层数据.XAML代码如下: <TreeView Name="chapterTree" Grid.Column="0"> <TreeView.ItemTemplate> <HierarchicalDataTemplate ItemsSource="{Binding Path=ChildNodes}"&

如何在DOS窗口复制和粘贴命令

在键盘上按下windows+R键,打开运行窗口. 在"打开"处输入cmd,并按下enter键,打开DOS窗口. 把鼠标移动到DOS窗口标题处,单击鼠标右键,选择属性. 把编辑选项处的"快速编辑模式"勾选,并点击确定按钮. 用鼠标左键选中命令后,单击鼠标右键,即完成了命令的复制. 在粘贴处再次单击鼠标右键,即完成了命令的粘贴. 原文链接:http://jingyan.baidu.com/article/cb5d6105fbb497005d2fe079.html