首页 文章

在menuitem.icon中wpf可变图像

提问于
浏览
0

我正在尝试在我的代码中实现一个语言菜单,但是我没有让它工作,我的语言按钮显示了活动语言的正确图像 .

我正在尝试的代码是不正确的 . 但我不知道如何改变它的工作原理:

<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>

我用作数据触发器的语言类给了我实际的langeuage,我想根据这个值设置一个图像 . 我不想这是C#代码,因为我认为wpf可以通过数据绑定来做到这一点,这是最干净的方法 .

我知道这里的风格值不正确 . setter属性也是错误的 . 至少xaml设计师告诉我这个 . 目前我尝试学习xaml代码的原理,是的,我认为对于这个问题,我不知道它们 . ;)所以,请耐心等待 .

提前致谢!

编辑:我需要xaml-designer不会杀死我的代码,但不会显示图像 . 它显示“System.Windows.Style” .

1 回答

  • 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>
    

    谢谢您的帮助!!!

相关问题