我正在尝试在代码中实现语言菜单,但是我的语言按钮无法向我显示当前语言的正确图像,因此无法正常工作。
我正在尝试使用的代码不正确。但我不知道如何更改它的工作原理:
<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”。
答案 0 :(得分:0)
我该死的很近。
@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>
感谢您的帮助!