我有以下TextBlock样式:
<Style TargetType="TextBlock" x:Key="MyValues">
<Setter Property="FontStyle" Value="Italic"/>
<Setter Property="Foreground" Value="DarkBlue"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsMetric}" Value="True">
<Setter Property="Text">
<Setter.Value>
<MultiBinding StringFormat="F1">
</MultiBinding>
</Setter.Value>
</Setter>
<Setter Property="Foreground" Value="Red"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=IsMetric}" Value="False">
<Setter Property="Text">
<Setter.Value>
<MultiBinding StringFormat="F3">
</MultiBinding>
</Setter.Value>
</Setter>
<Setter Property="Foreground" Value="Green"/>
</DataTrigger>
</Style.Triggers>
然后我按如下方式使用TextBlocks
:
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Path=Breadth}" Style="{StaticResource MyValues}"/>
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Path=Depth}" Style="{StaticResource MyValues}"/>
<TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding Path=Area}" Style="{StaticResource MyValues}" />
目的是根据绑定属性IsMetric
设置StringFormat。样式中的Binding是空的,因为我想为多个TextBlocks应用相同的样式,所有TextBlock都绑定到不同的属性。触发器正在工作,但StringFormat`会被忽略,任何想法?
答案 0 :(得分:2)
在此,您将Text
属性设置为TextBlock
声明和DataTriggers
中的不同内容。在第一种情况下,它是Binding
类的实例。在第二种情况下,它是MultiBinding
类的实例。最后它是其中之一。它现在不可能同时存在。
以下标记
<Setter Property="Text">
<Setter.Value>
<MultiBinding StringFormat="F1">
</MultiBinding>
</Setter.Value>
</Setter>
实例化 MultiBinding
类实例并将其设置为Text
属性。
Text="{Binding Path=Breadth}"
实例化 Binding
类实例并将其设置为Text
属性。