使用具有不同绑定的DataTrigger的样式

我有一系列TextBlocks,我想要应用Style和DataTrigger。 唯一的区别是Binding是针对每个属性的视图模型中的不同属性。

以下是其中一个TextBlocks的简化版本,其中Style和DataTrigger“内置”。

             

因此,在前面的示例中,每个TextBlock的“IsDevelopmentIsDirty”绑定都不同。

我只是找不到最好的方法来找到将这个Style整合到一个可以被整个TextBlocks系列使用的声明中的最好方法。

有没有办法分配DataTrigger应该绑定的样式和属性? 如果没有,有什么办法呢? 我提前谢谢。

如果要根据TextBlock根据不同的属性触发相同的样式更改,可以使用代理属性。 这假设它将是一个布尔属性,或者可以转换为布尔值的属性。

解决方案1

在最简单的解决方案中,您可以使用Tag属性

      

Style内部触发Tag属性为true,然后在外部,您可以将Tag属性绑定到您想要的任何内容。 当然,这个Style可以被提取到一些资源字典中。

解决方案2

例如,如果您需要更多属性,则另一种解决方案是创建附加属性

 public static class AttachedProperties { public static readonly DependencyProperty ChangeStyleProperty = DependencyProperty.RegisterAttached("ChangeStyle", typeof(bool), typeof(AttachedProperties)); public static bool GetChangeStyle(DependencyObject d) { return (bool)d.GetValue(ChangeStyleProperty); } public static void SetChangeStyle(DependencyObject d, bool value) { d.SetValue(ChangeStyleProperty, value); } } 

然后按照与Tag相同的方案

      

像这样在页面顶部声明样式

    

然后TextBlock应该是这样的