2017-10-13 57 views
1

我有一个Ribbonbutton,我想更改MouseOver上的图标,但似乎不起作用。C#WPF RibbonButton更改MouseOver上的图标

这里是我的代码:

<RibbonButton Label="Verbindung testen" LargeImageSource="../Resources/Buttons/disconnect.png" Command="{Binding SettingsVM.TestConnectionCommand}"> 
        <RibbonButton.Style> 
         <Style TargetType="{x:Type RibbonButton}"> 
          <Style.Triggers> 
           <Trigger Property="IsMouseOver" Value="True"> 
            <Setter Property="LargeImageSource" Value="../Resources/Buttons/connect.png"/> 
           </Trigger> 
           <Trigger Property="IsMouseOver" Value="False"> 
            <Setter Property="LargeImageSource" Value="../Resources/Buttons/disconnect.png"/> 
           </Trigger> 
          </Style.Triggers> 
         </Style> 
        </RibbonButton.Style> 
</RibbonButton> 

它只是显示的第一个图标“disconnect.png”,并在鼠标悬停它被高亮显示为所有其他按钮,但没有图像的变化。

我也尝试过这种方式,通过控件模板:

<RibbonButton Label="Verbindung testen" LargeImageSource="../Resources/Buttons/disconnect.png" Command="{Binding SettingsVM.TestConnectionCommand}"> 
<RibbonButton.Template> 
    <ControlTemplate TargetType="{x:Type RibbonButton}"> 
     <ControlTemplate.Triggers> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter Property="LargeImageSource" Value="../Resources/Buttons/connect.png"/> 
      </Trigger> 
      <Trigger Property="IsMouseOver" Value="False"> 
       <Setter Property="LargeImageSource" Value="../Resources/Buttons/disconnect.png"/> 
      </Trigger> 
     </ControlTemplate.Triggers> 
    </ControlTemplate> 
</RibbonButton.Template> 

这里它不显示图标在所有。

回答

0

找到答案!

WPF RibbonButton: LargeImageSource and Label not updated via DataTriggers

的问题是在按钮本身LargeImageSource您设置的属性和标签。当你这样做时,它会对你的风格触发器进行精确的测试。我建议在样式中使用setter来设置默认值,并删除按钮上的属性设置。

所以它必须是:

<RibbonButton Label="Verbindung testen" Command="{Binding SettingsVM.TestConnectionCommand}"> 
<RibbonButton.Style> 
    <Style TargetType="{x:Type RibbonButton}"> 
     <Style.Triggers> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter Property="LargeImageSource" Value="../Resources/Buttons/connect.png"/> 
      </Trigger> 
      <Trigger Property="IsMouseOver" Value="False"> 
       <Setter Property="LargeImageSource" Value="../Resources/Buttons/disconnect.png"/> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</RibbonButton.Style> 

从按钮本身取出 “LargeImageSource”。