我正试图在我的代码中实现一个语言菜单,但是我的语言按钮显示的是活动语言的正确图像,却不能正常工作。
我正在尝试的代码是不正确的。但我不知道如何改变它,它是有效的:
<MenuItem Click="LangMouseLeftButtonUp" ContextMenuOpening="LangMouseRightButtonUp" x:Name="LangImageIcon">
<MenuItem.Icon>
<Style TargetType="MenuItem">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Language.ActualLanguage}" Value="EN">
<Setter Property="Icon">
<Setter.Value>
<Image Source="Resources/United_Kingdom.png" Height="20" />
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Path=Language.ActualLanguage}" Value="DE">
<Setter Property="Icon">
<Setter.Value>
<Image Source="Resources/Germany.png" Height="20" />
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</MenuItem.Icon>
<MenuItem.ContextMenu>
<ContextMenu>
<MenuItem Header="Deutsch" Click="MenuLanguageDE_Click"/>
<MenuItem Header="Englisch" Click="MenuLanguageEN_Click"/>
</ContextMenu>
</MenuItem.ContextMenu>
</MenuItem>我用来作为数据触发器的语言类给出了实际的语言,我想根据这个值设置一个图像。我不想做这个的C#代码,因为我认为wpf可以通过数据绑定来做到这一点,这是最干净的方法。
我知道这里的样式值不正确。setter属性也是错误的。至少xaml设计者告诉我这一点。目前,我正在尝试学习xaml代码的原理,是的,我认为对于这个问题,我并不了解它们。;)所以,请耐心等待。
提前感谢!
编辑:我修改了xaml-designer不会杀死我的代码,但图像没有显示。它显示的是"System.Windows.Style“。
发布于 2018-12-10 17:04:06
@nosale你给出了正确的提示。将menuitem.icon更改为menuitem.style后,一切工作正常!
<MenuItem Click="LangMouseLeftButtonUp" ContextMenuOpening="LangMouseRightButtonUp" x:Name="LangImageIcon">
<MenuItem.Style>
<Style TargetType="MenuItem">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Language.ActualLanguage}" Value="EN">
<Setter Property="Icon">
<Setter.Value>
<Image Source="Resources/United_Kingdom.png" Height="20" />
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Path=Language.ActualLanguage}" Value="DE">
<Setter Property="Icon">
<Setter.Value>
<Image Source="Resources/Germany.png" Height="20" />
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</MenuItem.Style>
<MenuItem.ContextMenu>
<ContextMenu>
<MenuItem Header="Deutsch" Click="MenuLanguageDE_Click"/>
<MenuItem Header="Englisch" Click="MenuLanguageEN_Click"/>
</ContextMenu>
</MenuItem.ContextMenu>
</MenuItem>谢谢你的帮助!
https://stackoverflow.com/questions/53701482
复制相似问题