我对RibbonButton行为中的一种奇怪现象感到困惑。
当我在XAML中静态设置LargeImageSource和Label时,一切正常:
<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>
设置命令在两种情况下均可正常工作,但其他两种属性无效......
欢迎任何建议。
答案 0 :(得分:1)
我在MSDN论坛上问了同样的问题,我得到的答案真的解决了这个问题。
问题是您在按钮本身中设置LargeImageSource和Label的属性。当你这样做时,它会占用你的风格触发器。我建议在样式中使用setter来设置默认值,并在属性设置中删除按钮。