我希望我的文本框根据验证状态将特定文本显示为工具提示。为此,我目前使用以下代码并且它可以工作:
<TextBox Name="textBox1">
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="False">
<Setter Property="ToolTip" Value="{Binding XPath=HelpText/Description, Mode=OneTime}" />
</Trigger>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)[0].ErrorContent}" />
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
如果没有错误,则会显示从 xml 文件中读取的描述文本,如果有错误,则会显示验证错误字符串。
问题是现在我必须复制这种样式并将其应用于每个文本框(并更改 XPath,它对于每个文本框都是唯一的),我想要做的是将样式放在 Window.Resources 中以便我可以只需为每个文本框引用它,如下所示:
<TextBox Name="textBox2" Style="{StaticResource TextBoxStyle}" />
但是每个文本框的 XPath 会有所不同,所以我不能只将我的样式放在 Window.Resources 中。如何使特定于实例的 XPath 在样式中可用?有没有办法在不创建新文本框并从 TextBox 派生的情况下做到这一点?我想知道在这种情况下是否可以使用附加属性,但我不知道它们是如何工作的。
提前致谢。