在查看我多年前编写的一些代码时,我在我的 WPF 样式部分中遇到了这个触发器。可以看出,我使用对 Checkin、Checkout 和 NotSeen 的完全相同的引用调用 MultiBinding 转换器 7 次,以产生 7 种不同的颜色。这让我觉得非常多余和占用空间。一定会有更好的办法。
有没有办法用更短的风格来完成这个?此外,他们是在 MVVM 框架中完全避免 MultiBinding Converter 的一种方式吗?可以使用附加行为来代替它吗?
TIA
<Style.Triggers>
<!-- if checkout is null, then check for waiting time from the checkin value. Setter action occurs for DataTrigger Value -->
<DataTrigger Value="1" >
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource WaitStatus}">
<Binding Path="CheckIn" />
<Binding Path="CheckOut" />
<Binding Path="NotSeen" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Background" Value="{StaticResource VioletBrush}" />
</DataTrigger>
<DataTrigger Value="2" >
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource WaitStatus}">
<Binding Path="CheckIn" />
<Binding Path="CheckOut" />
<Binding Path="NotSeen" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Background" Value="{StaticResource BlueBrush}" />
</DataTrigger>
<DataTrigger Value="3" >
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource WaitStatus}">
<Binding Path="CheckIn" />
<Binding Path="CheckOut" />
<Binding Path="NotSeen" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Background" Value="{StaticResource TurquoiseBrush}" />
</DataTrigger>
<DataTrigger Value="4" >
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource WaitStatus}">
<Binding Path="CheckIn" />
<Binding Path="CheckOut" />
<Binding Path="NotSeen" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Background" Value="{StaticResource GreenBrush}" />
</DataTrigger>
<DataTrigger Value="5" >
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource WaitStatus}">
<Binding Path="CheckIn" />
<Binding Path="CheckOut" />
<Binding Path="NotSeen" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Background" Value="{StaticResource YellowBrush}" />
</DataTrigger>
<DataTrigger Value="6" >
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource WaitStatus}">
<Binding Path="CheckIn" />
<Binding Path="CheckOut" />
<Binding Path="NotSeen" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Background" Value="{StaticResource OrangeBrush}" />
</DataTrigger>
<DataTrigger Value="7" >
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource WaitStatus}">
<Binding Path="CheckIn" />
<Binding Path="CheckOut" />
<Binding Path="NotSeen" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Background" Value="{StaticResource RedBrush}" />
</DataTrigger>
</Style.Triggers>