DependencyProperty не срабатывает - PullRequest
6 голосов
/ 09 февраля 2012

Я определил свойство в моем usercontrol следующим образом:

 public bool IsSelected 
    {
        get { return (bool)GetValue(IsSelectedProperty); }
        set
        {
            SetValue(IsSelectedProperty, value);
            StackPanelDetails.Visibility = value ? Visibility.Visible : Visibility.Collapsed;
        }
    }

    public static readonly DependencyProperty IsSelectedProperty =
        DependencyProperty.Register("IsSelected", typeof (bool), typeof (ucMyControl));

Но когда я устанавливаю его свойство в xaml, оно хочет вызвать его (set не вызывается).

 <DataTemplate><local:ucTopicItem IsSelected="False" /></DataTemplate>

В чем может быть проблема?

Ответы [ 2 ]

10 голосов
/ 09 февраля 2012

Сеттер вашего DependencyProperty не будет вызываться WPF, когда DP установлен в XAML.WPF установит свойство DependencyProperty напрямую.

См. MSDN Свойства загрузки и зависимости XAML для объяснения, почему установщик не вызывается.

5 голосов
/ 09 февраля 2012

Вы должны напрямую использовать обработчик измененного свойства в свойстве зависимости. Таким образом вы гарантируете, что он вызывается при установке в XAML:

public static readonly DependencyProperty IsSelectedProperty =
    DependencyProperty.Register("IsSelected", typeof(bool), typeof(ucMyControl), new PropertyMetadata(false, OnIsSelectedChanged));

private static void OnIsSelectedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    // Implement change logic
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...