25

WPF では、デフォルトでバインディングがどのように適用されるかをテンプレート化できるようにしたいと考えています。

たとえば、私は書きたい:

Text="{Binding Path=PedigreeName}"

しかし、次のように入力したかのようになります。

Text="{Binding Path=PedigreeName, Mode=TwoWay, UpdateSourceTrigger=LostFocus, NotifyOnValidationError=True, ValidatesOnDataErrors=True, ValidatesOnExceptions=True}" 

何か案が ?

ありがとう、

  • パトリック
4

2 に答える 2

28

PropertyMetadata を受け取るDependencyProperty.Registerのオーバーロードの 1 つを使用します。FrameworkPropertyMetadataのインスタンスを渡し、そのプロパティを設定します。

public class Dog {
    public static readonly DependencyProperty PedigreeNameProperty =
        DependencyProperty.Register("PedigreeName", typeof(string), typeof(Dog),
            new FrameworkPropertyMetadata() {
                BindsTwoWayByDefault = true,
                DefaultUpdateSourceTrigger = UpdateSourceTrigger.LostFocus
            }
        );

NotifyOnValidationError、ValidatesOnDataErrors、または ValidatesOnExceptions のデフォルトを設定する方法をすぐに見たことはありませんが、何を探すべきかを確認するのにこれを十分に使用していません。彼らはそこにいるかもしれません。

于 2009-07-07T20:41:34.740 に答える
16

Joe White の良い答えに加えて、Binding から継承し、必要な既定のプロパティ値を設定するクラスを作成することもできます。例えば ​​:

public class TwoWayBinding : Binding
{
    public TwoWayBinding()
    {
        Initialize();
    }

    public TwoWayBinding(string path)
      : base(path)
    {
        Initialize();
    }

    private void Initialize()
    {
        this.Mode = BindingMode.TwoWay;
    }
}
于 2009-07-07T20:46:39.567 に答える