gpt4 book ai didi

wpf - 具有正确样式和图标的动态菜单

转载 作者:行者123 更新时间:2023-12-03 10:40:30 25 4
gpt4 key购买 nike

我已经被困了一段时间了。

我想要我的 MVVM 应用程序的动态菜单。在我的 View 模型中,我有一个名为 Menu 的属性。 :

Menu : List<IAction>

在哪里 IAction定义为:
public interface IAction
{
string Name { get; set; }
ImageSource Icon { get; set; }
ICommand Command { get; set; }
List<IAction> ChildActions { get; set;}
}

我按如下方式填充我的菜单:
<ToolBar>
<Menu ItemsSource="{Binding Menu}">
<Menu.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Header" Value="{Binding Name}" />
<Setter Property="Command" Value="{Binding Command}" />
<Setter Property="Icon">
<Setter.Value>
<Image Source="{Binding Icon}" />
</Setter.Value>
</Setter>
<Setter Property="ItemsSource" Value="{Binding ChildActions}" />
</Style>
</Menu.ItemContainerStyle>
</Menu>
</ToolBar>

上面的代码正确地填充了层次结构,如:
File
-> Item1
-> Item1
-> Submenu
-> SubItem1
-> SubItem2

我的问题:

我的问题是菜单的样式与我定义静态菜单时不同。看起来该样式已重置为“Windows XP”外观的灰色样式,而不是具有白色背景和灰色图像列的默认样式。

另一个问题是 Item1 和 Item2(即第一级的项目)没有图标。 Subitem1 和 Subitem2 有图标。

我的问题:

如何以正确显示图标且默认样式保持不变的方式填充数据绑定(bind)菜单?

感谢您的反馈!

最佳答案

在主题问题上,您需要通过将以下内容添加到 Style 元素来使您的样式基于旧菜单样式:

BasedOn="{StaticResource {x:Type MenuItem}}" 

我不确定您的图标问题。我认为它没有理由适用于一个级别,但不适用于另一个级别。

关于wpf - 具有正确样式和图标的动态菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5066835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com