Подтвердить что ты не робот

WPF: определение привязки по умолчанию

В WPF, я хотел бы иметь возможность шаблона, как мои привязки применяются по умолчанию.

Например, я хочу написать:

Text="{Binding Path=PedigreeName}"

Но это было бы так, как если бы я набрал:

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

Любая идея?

Спасибо,

  • Патрик
4b9b3361

Ответ 1

В дополнение к Joe White хороший ответ, вы также можете создать класс, который наследует от Binding, и задает требуемые значения свойств по умолчанию. Например:

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

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

    private void Initialize()
    {
        this.Mode = BindingMode.TwoWay;
    }
}

Ответ 2

Используйте одну из перегрузок DependencyProperty.Register, которые принимают PropertyMetadata. Передайте экземпляр 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, но я не использовал это достаточно, чтобы быть уверенным, что искать; они могут быть там.