wpf изменяемое изображение в menuitem.icon - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь реализовать языковое меню в моем коде, но я не могу заставить его работать, потому что моя языковая кнопка показывает мне правильное изображение для активного языка.

Код, который я пытаюсь использовать, неверен.Но я не знаю, как изменить его, чтобы он работал:

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

1 Ответ

0 голосов
/ 10 декабря 2018

Черт возьми, я был так близко.

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

Спасибо за помощь !!!

...