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

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

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

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

Ответы [ 2 ]

92 голосов
/ 19 апреля 2010

При регистрации свойства инициализируйте ваши метаданные с:

new FrameworkPropertyMetadata
{
    BindsTwoWayByDefault = true,
    DefaultUpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
}
17 голосов
/ 23 июля 2012

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

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); }
}
...