我创建了一个自定义文本框,其中包含属性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>
通过上面的代码一切正常,但问题是工具提示不在&#34; Red&#34;颜色。 :( 有人可以建议吗?
我尝试了另一种方法,前景现在是&#34; Red&#34;,但我需要有关如何使用tootip文本绑定描述的帮助。请参阅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>
答案 0 :(得分:0)
在DataTrigger中,&#34; Text&#34;用于为工具提示设置前景的TextBlock属性会覆盖工具提示的文本值,这就是您无法查看说明的原因。所以绑定&#34; Text&#34;使用SelfPropertyInfo.RuleDescription的属性。
答案 1 :(得分:0)
我尝试使用普通属性,它对我来说很好
private string testString;
public string TestString
{
get { return testString; }
set
{
testString = value;
RaisePropertyChanged("TestString");
}
}
<TextBox Height="100" Text="{Binding TestString}">
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<DataTrigger Binding="{Binding TestString}" Value="False">
<Setter Property="BorderBrush" Value="Red"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="ToolTip">
<Setter.Value>
<ToolTip >
<TextBlock Foreground="Red" Text="{Binding TestString}"/>
</ToolTip>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>