更新:找到解决方案,见下文!
我正在尝试实现以下行为:
用户控件中有几个文本框。每个 TextBox-ToolTip 都应该显示一个特定的字符串,该字符串位于 Resource.resx 文件中。如果此 TextBox 的验证返回错误,则返回的错误字符串将显示在 ToolTip 中。这应该使用样式来完成。我目前的状态是,我可以显示特定的 Validation.Errors 和一个默认的工具提示,这对于每个使用样式的文本框都是相同的。
所以我的风格是:
<Style TargetType="{x:Type TextBox}">
<Setter Property="ToolTip" Value="ExampleToolTip"/>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={RelativeSource Self},
Path=(Validation.Errors).CurrentItem.ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
使用这种风格,我得到了上述行为。
现在我想要样式部分
<Style TargetType="{x:Type TextBox}">
<Setter Property="ToolTip" Value="ExampleToolTip"/>
...
</Style>
是特定于文本框的。
我尝试为我的文本框编写一个附加属性,以便我可以定义第二个字符串,它应该用作标准工具提示。
附加属性代码如下所示:
public class TextBox2 : DependencyObject
{
public static void SetToolTipStandard(TextBox target, string value)
{
target.SetValue(ToolTipStandardProperty, value);
}
public static string GetToolTipStandard(TextBox target)
{
return (string)target.GetValue(ToolTipStandardProperty);
}
public static DependencyProperty ToolTipStandardProperty = DependencyProperty.RegisterAttached(
"ToolTipStandard",
typeof(string),
typeof(TextBox),
new PropertyMetadata());
}
现在我想在 XAML 中的 TextBoxes 上设置 TextBox2.ToolTipStandard 属性,并且 TextBox-Style 应该使用此属性来设置默认的 ToolTip-Text。我尝试了几种绑定组合,但没有成功。有没有办法实现这种行为?