我有两个类型的文本必须遵循基于枚举类似的着色规则:使用单一样式设置超链接和TextBlock的样式?
public enum Modes
{
A,
B,
C
}
与DataTrigger
标记样式是用来上色:
<Style TargetType="SEE BELOW" x:Key="Coloring">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=.}" Value="A">
<Setter Property="Foreground" Value="Red" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=.}" Value="B">
<Setter Property="Foreground" Value="Green" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=.}" Value="C">
<Setter Property="Foreground" Value="Blue" />
</DataTrigger>
</Style.Triggers>
</Style>
一个使用场景是System.Windows.Documents.Hyperlink
嵌套0:
<Hyperlink><TextBlock/></Hyperlink>
而另一个只是一个简单的TextBlock
:
<TextBlock Style="{StaticResource Coloring}" Text="yada"/>
我当然可以,风格既TextBlock
元素:
<TextBlock Style="{StaticResource Coloring}" Text="yada"/>
<Hyperlink><TextBlock Style="{StaticResource Coloring}"/></Hyperlink>
但未能样式的超链接案件的下划线。
如果我尝试风格跨越两种类型:
<TextBlock Style="{StaticResource Coloring}" Text="yada"/>
<Hyperlink Style="{StaticResource Coloring}"><TextBlock/></Hyperlink>
然后造型失败,因为有(显然)在风格的TargetType
属性使用没有共同的祖先类型。
因为这最终是一个可配置的东西,目标是有一个XAML文档定义这些文本块的颜色映射模式。因此,我不愿意为定义相同映射的两种冗余样式(一种用于超链接,一种用于TextBlock)。
所以......问题:如何在没有多余Style XAML块的情况下始终如一地对两种情况进行样式设计?
谢谢。很多方式来完成WPF中的事情。我认为我现在有足够的能力前进。 – el2iot2 2010-02-11 22:10:34