使用wpf + c#做一个二级菜单,要求对一个二维数组进行循环添加,动态添加形成一个二级菜单,要完整的代码
时间: 2024-03-20 18:45:10 浏览: 72
AutoCAD二次开发:C#实现一个WPF进度条窗体,实时显示任务进度
下面是一个使用 WPF 和 C# 实现的二级菜单的完整代码,其中使用了一个二维数组进行循环添加,形成了一个动态的二级菜单。
XAML 代码:
```xml
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="二级菜单示例" Height="450" Width="800">
<Grid>
<Menu>
<MenuItem Header="一级菜单">
<ItemsControl ItemsSource="{Binding SubMenus}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<MenuItem Header="{Binding}">
<ItemsControl ItemsSource="{Binding SubMenus}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<MenuItem Header="{Binding}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</MenuItem>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</MenuItem>
</Menu>
</Grid>
</Window>
```
C# 代码:
```csharp
using System.Collections.Generic;
using System.Windows;
namespace WpfApp1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
// 初始化二级菜单数据
var subMenus = new List<object>();
for (var i = 1; i <= 3; i++)
{
var subMenu = new List<object>();
for (var j = 1; j <= 3; j++)
{
subMenu.Add($"二级菜单 {i}-{j}");
}
subMenus.Add(subMenu);
}
// 绑定数据到界面
DataContext = new { SubMenus = subMenus };
}
}
}
```
运行程序后,您将看到一个名为“一级菜单”的菜单,当您将鼠标悬停在它上面时,将显示一个动态的二级菜单,其中包含从二维数组中动态添加的菜单项。每个一级菜单项都包含一个下拉菜单,其中包含从二维数组中动态添加的二级菜单项。
阅读全文