2

更新: 解決策が見つかりました。以下を参照してください。

私は次の動作を実装しようとしています:

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 を設定する必要があります。バインディングのいくつかの組み合わせを試しましたが、成功しませんでした。この動作を実現する方法はありますか?

4

2 に答える 2

0

エラー ツールチップを提供する入力コントロールの周りに 0ControlTemplateの非表示の境界線を配置することができます。BorderThicknessエラーが発生した場合、可視性を表示に設定すると、エラー ツールチップが表示されます。

これは単なるアイデアですが、うまくいくかもしれません。

于 2012-11-09T15:39:49.270 に答える
0

すべての TextBox に名前を付け、TextBox-Style に複数のトリガーを追加することで、目的の動作を得ることができました。コードは次のとおりです。

<UserControl.Resources>
    <Style TargetType="{x:Type TextBox}">
            <Style.Triggers>
                <!--Here are the static resource strings for the normal-state ToolTip-->
                <Trigger Property="Name" Value="TextBox1">
                    <Setter Property="ToolTip" Value="{x:Static properties:UIStrings.TextBox1_ToolTip_String}"/>
                </Trigger>
                <Trigger Property="Name" Value="TextBox2">
                    <Setter Property="ToolTip" Value="{x:Static properties:UIStrings.TextBox2_ToolTip_String}"/>
                </Trigger> ...

                <Trigger Property="Validation.HasError" Value="true">
                    <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors).CurrentItem.ErrorContent}"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </UserControl.Resources>
于 2012-11-12T14:47:53.887 に答える