这实际上比现在困难得多。 在妇女论坛中,“Label”不是案文Block。 它源自内容调查,因此可以在内容收集方面接受其他非文本控制。
但是,你可以具体说明如下例子的内容。 在内部,将建造一个会议室,为您提供发言稿。
<Label Content="Test!"/>
这在内部转化为:
<Label>
<Label.Content>
<TextBlock>
Test!
</TextBlock>
</Label.Content>
</Label>
简单的解决办法是,文本Block的财产作为附属财产。 例如,FontSize就是这样设计的,因此:
<Label TextBlock.FontSize="24">
<Label.Content>
<TextBlock>
Test!
</TextBlock>
</Label.Content>
</Label>
文本Block。 玉米附属财产可在直观树中任何地方应用,并将高于树木中任何原生后代对该财产的默认价值。 然而,财产不是这样设计的。
这使你们至少有几种选择。
- Use color, border, cursor, etc., instead of underlined text because this is 100% easier to implement.
- Change the way you are doing this to apply the Style to the TextBlock instead.
- Go to the trouble to create your own attached property and the control template to respect it.
- Do something like the following to nest the style for TextBlocks that appear as children of your style:
这是我迄今在人民论坛所做的最丑恶的事情,但它却发挥了作用!
<Style x:Key="ActionLabelStyle" TargetType="{x:Type Label}">
<Setter Property="Margin" Value="10,3" />
<Setter Property="Padding" Value="0" />
<Setter Property="TextBlock.TextWrapping" Value="Wrap" />
<Setter Property="FontFamily" Value="Calibri" />
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True" />
<Condition Property="IsEnabled" Value="True" />
</MultiTrigger.Conditions>
<Setter Property="Background" Value="Red" />
</MultiTrigger>
</Style.Triggers>
<Style.Resources>
<Style TargetType="TextBlock">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=Label}, Path=IsMouseOver}" Value="True" />
<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsEnabled}" Value="True" />
</MultiDataTrigger.Conditions>
<Setter Property="TextDecorations" Value="Underline"/>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</Style.Resources>
</Style>
这样做的原因在于它超越了这种风格背后的任何文本Block语的缺省风格。 然后,它使用多数据交换机,允许对Label的相对约束性支持,以检查其IsMouseOver财产是否真实。 Yuck。
<><>Edit>:
请注意,只有你明确设立案文Block,才能做到这一点。 我在张贴这封信时是不正确的,因为我已经放弃了我的拉贝尔测试。 Boo。 感谢 Anvaka指出这一点。
<Label Style="{StaticResource ActionLabelStyle}">
<TextBlock>Test!</TextBlock>
</Label>
这样做,但如果你不得不去处理这一麻烦,你就重新努力。 没有人会把东西 post倒,或者正如你所说的那样,我的选择1现在看起来好坏。