我在XAML中声明了ProgressBar
:
<ProgressBar Width="100" Height="15" BorderThickness="0" Value="{Binding Progress}" Maximum="{Binding Maximum}" Minimum="{Binding Minimum}"/>
我们还假装我通过绑定提供了另一个属性,FileState
反映了两个状态的枚举:Complete
和Failed
。
如果FileState
值为Complete
,我希望ProgressBar
的颜色为Green
。如果FileState
为Failed
,我希望颜色为Red
。
XAML是否以声明式方式实现了这一点?
目标是促进更多FileState
s,例如&#34; In Progress&#34;等我已经看到了一堆像Highlighting Items in a WPF ListView中描述的那样的解决方案;但是,这不是通过声明性XAML,而是通过实际代码来促进的。
链接文章的派生解决方案是:
<ProgressBar.Style>
<Style TargetType="{x:Type ProgressBar}">
<Style.Triggers>
<!--"2" being "Complete"-->
<DataTrigger Binding="{Binding FileState}" Value="2">
<Setter Property="Background" Value="AliceBlue"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ProgressBar.Style>
并为不同的值重复这一点。但是,我不知道这是不是最好的做法&#34;。
答案 0 :(得分:0)
从我所看到的,对于声明式样式,OP中提到的解决方案是最佳实践。如果需要,他们可以进一步抽象出styles to a CommonStyles.xaml file并动态引用该样式:< ... Style="{DynamicResource Style_Triggers}"/>