示例代码:
<TreeView>
<TreeViewItem Header="Desktop">
<TreeViewItem Header="Computer">
</TreeViewItem>
<TreeViewItem Header="Recycle Bin">
</TreeViewItem>
<TreeViewItem Header="Control Panel">
<TreeViewItem Header="Programs" />
<TreeViewItem Header="Security" />
</TreeViewItem>
<TreeViewItem Header="Network">
</TreeViewItem>
</TreeViewItem>
</TreeView>
TreeViewItem控件下面可以继续使用TreeViewItem控件作为它的子元素。实现层级菜单功能。
示例代码:
/// <summary>
/// 在窗口加载的时候动态加载TreeView
// </summary>
/// <param name="sender">事件的发送者 其调用的事件处理器</param>
/// <param name="e">包含与路由事件相关的状态信息和事件数据</param>
private void Window_Loaded(object sender, RoutedEventArgs e)
{
//签到管理
TreeViewItem triSign = new TreeViewItem();//创建子节点
triSign.Header = "员工签到";//子节点命名
Button btnSign = new Button();//创建按钮
btnSign.Content = "查看签到";//按钮命名
btnSign.Click += btnSign_Click;
triSign.Items.Add(btnSign);//将按钮添加至子节点之下
trMenu.Items.Add(triSign);//将子节点添加至treeview
}
相关知识参考
WPF sender、e.Source、e.OriginalSource三者概念差别
WPF的路由事件CSDN论坛
或者是这样:
前台部分代码
<TreeView Name="menus">
<TreeViewItem Name="tvid"
Header="Desktop"
Selected="tvid_Selected">
<TreeViewItem Name="tvi1" Header="员工信息" />
<TreeViewItem Name="tvi2" Header="个人信息" />
<TreeViewItem Name="tvi3" Header="通知管理" />
<TreeViewItem Name="tvi4" Header="通讯录" />
<TreeViewItem Name="tvi5" Header="联系管理员" />
<TreeViewItem Name="tvi6" Header="Network" />
</TreeViewItem>
</TreeView>
后台代码
//为相应的TreeViewItem添加Selected事件。
private void tvid_Selected(object sender, RoutedEventArgs e)
{
//获取当前点击的TreeViewItem节点
TreeViewItem treeItem = (TreeViewItem) menus.SelectedItem;
//判断是哪一个子节点,执行相应的事件。
if (treeItem.Name =="tvi1")
{
//将Page1.xaml显示在Frame这个框架中
iFrame.Source = new Uri("Page1.xaml",UriKind.Relative);
//显示tvi1的Header属性
MessageBox.Show(tvi1.Header.ToString());
}
}