Есть ли способ указать режим привязки по умолчанию для пользовательского свойства зависимостей и триггер обновления?


Я хотел бы сделать так, чтобы по умолчанию при привязке к одному из моих свойств зависимостей режим привязки был двусторонним, а update-trigger-измененным свойством. Есть ли способ сделать это?

вот пример одного из моих свойств зависимостей:

public static readonly DependencyProperty BindableSelectionLengthProperty =
        DependencyProperty.Register(
        "BindableSelectionLength",
        typeof(int),
        typeof(ModdedTextBox),
        new PropertyMetadata(OnBindableSelectionLengthChanged));
2 51

2 ответа:

при регистрации свойства инициализируйте метаданные с помощью:

new FrameworkPropertyMetadata
{
    BindsTwoWayByDefault = true,
    DefaultUpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
}

в объявлении свойства зависимостей это будет выглядеть так:

public static readonly DependencyProperty IsExpandedProperty = 
        DependencyProperty.Register("IsExpanded", typeof(bool), typeof(Dock), 
        new FrameworkPropertyMetadata(true,
            FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
            OnIsExpandedChanged));

public bool IsExpanded
{
    get { return (bool)GetValue(IsExpandedProperty); }
    set { SetValue(IsExpandedProperty, value); }
}