wpf 根据配置文件生成菜单以及左侧树节点,并且双击节点可以显示在文件里配置的界面
时间: 2024-05-14 18:15:06 浏览: 126
WPF TreeView1 双击新增节点 到TreeView2中,右键菜单删除TreeView2子节点
首先,需要在配置文件中定义菜单和树节点的结构,以及与之关联的界面。例如:
```xml
<menu>
<item name="文件">
<subitem name="打开" page="OpenPage.xaml" />
<subitem name="保存" page="SavePage.xaml" />
</item>
<item name="编辑">
<subitem name="撤销" page="UndoPage.xaml" />
<subitem name="重做" page="RedoPage.xaml" />
</item>
</menu>
<treeview>
<node name="主界面" page="MainPage.xaml">
<node name="文件" page="FilePage.xaml">
<node name="打开" page="OpenPage.xaml" />
<node name="保存" page="SavePage.xaml" />
</node>
<node name="编辑" page="EditPage.xaml">
<node name="撤销" page="UndoPage.xaml" />
<node name="重做" page="RedoPage.xaml" />
</node>
</node>
</treeview>
```
然后,在WPF应用程序中读取配置文件,生成菜单和树节点,并为它们设置双击事件。例如:
```csharp
// 读取配置文件
var menuItems = ConfigFile.ReadMenuItems();
var treeNodes = ConfigFile.ReadTreeNodes();
// 生成菜单
foreach (var item in menuItems)
{
var menuItem = new MenuItem { Header = item.Name };
foreach (var subitem in item.SubItems)
{
var submenuItem = new MenuItem { Header = subitem.Name };
submenuItem.Click += (sender, e) =>
{
ShowPage(subitem.Page);
};
menuItem.Items.Add(submenuItem);
}
menu.Items.Add(menuItem);
}
// 生成树节点
foreach (var node in treeNodes)
{
var treeNode = new TreeViewItem { Header = node.Name };
foreach (var subnode in node.Nodes)
{
var subtreeNode = new TreeViewItem { Header = subnode.Name };
subtreeNode.MouseDoubleClick += (sender, e) =>
{
ShowPage(subnode.Page);
};
treeNode.Items.Add(subtreeNode);
}
tree.Items.Add(treeNode);
}
// 显示界面
private void ShowPage(string page)
{
var uri = new Uri(page, UriKind.Relative);
var page = Application.LoadComponent(uri) as Page;
if (page != null)
{
frame.Navigate(page);
}
}
```
在双击菜单项或树节点时,调用ShowPage方法显示配置文件中指定的界面。
阅读全文