【发布时间】:2015-12-30 07:47:46
【问题描述】:
我创建了一个自定义文本框,其中包含一个属性 SelfPropertyInfo。这又有一些我们使用的其他属性(如 IsValid、Description 等)。我正在尝试在文本框上添加样式,以便如果 IsValid 为 false 它应该显示一个工具提示(其中包含描述)。
<Style TargetType="{x:Type ToolTip}">
<Setter Property = "Foreground" Value=" Red "/>
</Style>
<Style TargetType="{x:Type CustomControls:TextBox}">
<Setter Property="Height" Value="22"/>
<Setter Property="Margin" Value="2,2,2,2"/>
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" Value="DarkGray" />
</Trigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=SelfPropertyInfo.IsValid}" Value="False">
<Setter Property="BorderBrush" Value="Red"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=SelfPropertyInfo.RuleDescription}" >
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
通过上面的代码,一切正常,但问题是工具提示不是“红色”。 :( 有人可以推荐吗?
我尝试了另一种方法,前景现在是“红色”,但我需要有关如何将描述与提示文本绑定的帮助。请查看 DataTrigger 内部的变化,:
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=SelfPropertyInfo.IsValid}" Value="False">
<Setter Property="BorderBrush" Value="Red"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="ToolTip">
<Setter.Value>
<ToolTip >
<TextBlock Foreground="Red" Text="Hello"/>
</ToolTip>
</Setter.Value>
</Setter>
</DataTrigger>
提前感谢您的帮助。
我也试过下面的代码,但它使工具提示空白:
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=SelfPropertyInfo.IsValid}" Value="False">
<Setter Property="BorderBrush" Value="Red"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="ToolTip">
<Setter.Value>
<ToolTip >
<TextBlock Foreground="Red" Text="{Binding RelativeSource={RelativeSource Self}, Path=SelfPropertyInfo.RuleDescription}"/>
</ToolTip>
</Setter.Value>
</Setter>
【问题讨论】:
-
DataContextofToolTip应该与TextBox相同。您是否尝试过在CustomControls:TextBox.ToolTip中使用的相同绑定TextBlock.Text? -
感谢您的评论。是的,我试过了,但工具提示文本仍然是空白的。看看我做了什么:
标签: wpf