自己创建数据,使用wpf + c#创建一个顶部的二级菜单,要求遍历一个数组,将数组的结构添加至二级菜单中
时间: 2024-03-16 22:42:38 浏览: 118
好的,这里提供一种实现方式。
首先,我们需要在 XAML 中创建一个菜单控件和一个二级菜单项模板,代码如下:
```xaml
<Menu x:Name="menu">
<Menu.Resources>
<Style TargetType="MenuItem" x:Key="SubMenuStyle">
<Setter Property="Header" Value="{Binding Text}" />
<Setter Property="ItemsSource" Value="{Binding Children}" />
</Style>
</Menu.Resources>
</Menu>
```
这里使用了一个名为 `SubMenuStyle` 的样式来定义二级菜单项的模板。该模板将菜单项的 `Header` 属性绑定到数组元素的 `Text` 属性,将菜单项的 `ItemsSource` 属性绑定到数组元素的 `Children` 属性,从而实现遍历数组并将其结构添加至二级菜单中。
接下来,在 C# 代码中创建一个数组并遍历它,将每个数组元素添加到菜单控件中。示例代码如下:
```csharp
// 创建一个数组
var array = new[]
{
new { Text = "Item 1", Children = new[] { new { Text = "Item 1.1" }, new { Text = "Item 1.2" } } },
new { Text = "Item 2", Children = new[] { new { Text = "Item 2.1" }, new { Text = "Item 2.2" } } }
};
// 遍历数组并将其结构添加至二级菜单中
foreach (var item in array)
{
var menuItem = new MenuItem();
menuItem.Style = (Style)FindResource("SubMenuStyle");
menuItem.DataContext = item;
menu.Items.Add(menuItem);
}
```
在代码中,我们首先创建了一个数组 `array`,其中包含两个元素,每个元素都有一个 `Text` 属性和一个 `Children` 属性,`Children` 属性也是一个数组,包含该元素的子菜单项。
然后,我们使用 `foreach` 循环遍历该数组,对于每个数组元素,创建一个新的菜单项 `menuItem`,将其样式设置为上面定义的 `SubMenuStyle`,将其数据上下文设置为该数组元素,最后将其添加到菜单控件中。
这样,就可以实现遍历数组并将其结构添加至二级菜单中的需求了。
阅读全文