更新: 解決策が見つかりました。以下を参照してください。
私は次の動作を実装しようとしています:
UserControl にはいくつかの TextBox があります。各 TextBox-ToolTip は、Resource.resx ファイルにある特定の文字列を表示する必要があります。この TextBox の検証でエラーが返された場合、返されたエラー文字列がツールヒントに表示されます。これは Style を使用して行う必要があります。私の現在のステータスは、特定の Validation.Errors と、Style を使用するすべての TextBox で同じデフォルトの ToolTip を表示できることです。
だから私のスタイルは:
<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>
TextBox固有であること。
標準のツールヒントとして使用する必要がある 2 番目の文字列を定義できるように、TextBox の添付プロパティを記述しようとしました。
付属のプロパティ コードは以下のとおりです。
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 を設定する必要があります。バインディングのいくつかの組み合わせを試しましたが、成功しませんでした。この動作を実現する方法はありますか?