0

「CanNavigate」(bool)と呼ばれる依存関係プロパティを持つContentControlから継承するカスタムコントロールを実装しました。

Window.xamlに、テキストボックスの空をチェックするValidationRuleを含むテキストボックスがあります。次のコードに示すように、TextBox.Validation.HasErrorに基づいて「CanNavigate」をtrue/falseに設定します。

  <Style  TargetType="{x:Type TextBox}">
        <Style.Triggers>
            <Trigger Property="Validation.HasError" Value="true">
                <Setter Property="ToolTip"
            Value="{Binding RelativeSource={RelativeSource Self},
        Path=(Validation.Errors)[0].ErrorContent}"/>
                <Setter Property="{Binding CanNavigate}" Value="false"></Setter>
            </Trigger>                
        </Style.Triggers>           
    </Style>

このコードがあると、「'Property'プロパティはSetterでマークアップ拡張機能またはプロパティ要素構文を使用できません。Valueプロパティのみがマークアップ拡張機能またはプロパティ要素構文を使用できます。マークアップファイルのオブジェクト'System.Windows.Setter'でエラーが発生します」というエラーが発生します。

TextBox.validationErrorに基づいてCanNavigateプロパティを設定する方法はありますか。

よろしく、パティル

4

1 に答える 1

0
  • 最初のセッターに関しては、このセッターを ToolTip プロパティの Binding に置き換え、必要に応じて ValueConverter を使用する必要があると思いますが、トリガーはできません。このようにすることをお勧めします (このコードをテストしていないことに注意してください)。

    <TextBox ... ToolTip="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"  />
    
  • 2 番目のセッターについて: プロパティを定義するときのセッターでは、バインディングを指定する必要はありません。次のようにプロパティ名を指定するだけです。

    <Setter Property="CanNavigate" Value="False" />
    
于 2013-01-24T16:13:58.130 に答える