WPF动态生成TreeView 之后点击树中的一个节点触发事件

.Net技术 码拜 10年前 (2015-07-10) 4027次浏览 0个评论
 

先从数据库中读取数据,之后动态生成一个TreeView ,方法就是网上通用的 写一个递归来实现,我改的就是在TreeViewItem加一个StackPanel,在StackPanel中加一个image和textblock。大概代码如下
public void CreateTreeViewRecursive(ItemCollection items, DataTable dataSource, int parentid)
{
string filter;//定义一个过滤器
filter = string.Format(“Menu_ParentId={0}”, parentid);
DataRow[] drarr = dataSource.Select(filter);//将过滤的ID放入数组中
TreeViewItem tvitem;
foreach (DataRow dr in drarr)//递归循环查询出数据
{

tvitem = new TreeViewItem();// TreeNode();
StackPanel sp = new StackPanel();
sp.Orientation = Orientation.Horizontal;
Image image = new Image();
image.Height = 10;
image.Width = 10;
BitmapImage bi3 = new BitmapImage();
bi3.BeginInit();
bi3.UriSource = new Uri(“IMG.png”, UriKind.Relative);
bi3.EndInit();
image.Stretch = Stretch.Fill;
image.Source = bi3;
TextBlock tb = new TextBlock();

tb.Text = dr[“Menu_Name”].ToString();//给textblock的text赋值
tvitem.Tag = Convert.ToInt32(dr[“Menu_Id”]);
sp.Children.Add(image);
sp.Children.Add(tb);
tvitem.Header = sp;
items.Add(tvitem);//加入节点
CreateTreeViewRecursive(tvitem.Items, dataSource, Convert.ToInt32(tvitem.Tag));
}
}
之后就可以实现下列效果
WPF动态生成TreeView 之后点击树中的一个节点触发事件
我现在想实现 比如说点击北京那个item,MessageBox一个框,上面内容是北京(点击一个节点怎么触发相关事件)
我前台代码就一个数
<TreeView Name=”Menu_TV” Grid.RowSpan=”2″ ></TreeView>

10分

private void Menu_TV_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
string value = (string)Menu_TV.SelectedValue;
MessageBox.Show(value);
}

这样你试试 你点击treeview上的Item应该就自动执行这个方法。不行的话明儿在弄吧。

 
对了 记得给俺分呀 你这个提问的方法相当好
 
引用 楼主 caolei616 的回复:

先从数据库中读取数据。。。;

引用 2 楼 tianchangli 的回复:

private void Menu_TV_SelectedItemChanged。。。

这样就OK了

 
private void Menu_TV_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
string value =(sender as StackPanel).tag.tostring() ;

MessageBox.Show(value);
}

10分

都WPF了还用WINFORM的思维,你直接用模板不好吗
 
这个函数Menu_TV_SelectedItemChanged是什么原理?

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明WPF动态生成TreeView 之后点击树中的一个节点触发事件
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!