2011-09-13 23 views
0

我对RibbonButton行为中的一个特殊现象感到困惑。当我在XAML设置LargeImageSource和标签静态WPF RibbonButton:LargeImageSource和标签未通过DataTriggers更新

一切正常:

<ribbon:RibbonButton x:Name="ButtonArchive" 
        LargeImageSource="..\Assets\archive_insert.png" 
        Label="{Binding Path=ItemArchiveButton, 
        Source={StaticResource Strings}}"/> 

但是当我尝试通过DataTriggers修改这些属性 - 似乎没有任何发生。 触发器可以工作;我可以看到其他属性 - 如Command或IsEnabled - 在同一个触发器中设置OK。这只是这些太...

这里的XAML:

<ribbon:RibbonButton x:Name="ButtonArchive" 
    LargeImageSource="..\Assets\archive_insert.png" 
    Label="{Binding Path=ItemArchiveButton, Source={StaticResource Strings}}"> 
    <ribbon:RibbonButton.Style> 
     <Style> 
      <Style.Triggers> 
       <DataTrigger Binding ="{Binding ElementName=ItemsList, Path=SelectedItem.IsArchived}" Value="false"> 
        <Setter Property="ribbon:RibbonButton.Command" Value="{Binding ArchiveItemCommand}" /> 
        <Setter Property="ribbon:RibbonButton.LargeImageSource" Value="..\Assets\archive_insert.png" /> 
        <Setter Property="ribbon:RibbonButton.Label" Value="{Binding Path=ItemArchiveButton, Source={StaticResource Strings}}" /> 
       </DataTrigger> 
       <DataTrigger Binding ="{Binding ElementName=ItemsList, Path=SelectedItem.IsArchived}" Value="true"> 
        <Setter Property="ribbon:RibbonButton.Command" Value="{Binding RestoreItemCommand}" /> 
        <Setter Property="ribbon:RibbonButton.LargeImageSource" Value="..\Assets\archive_extract.png" /> 
        <Setter Property="ribbon:RibbonButton.Label" Value="{Binding Path=ItemRestoreButton, Source={StaticResource Strings}}" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </ribbon:RibbonButton.Style> 
</ribbon:RibbonButton> 

设置在两个条件命令工作正常,但没有其他2个属性...

任何意见将受到欢迎。

回答

1

我在MSDN论坛上提出了同样的问题,我已经真正解决了这个问题。

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