Доступ к свойству зависимости при загрузке - PullRequest
0 голосов
/ 12 марта 2012

Я настраиваю пользовательское свойство в одном из своих пользовательских элементов управления, как вы можете видеть ниже.

C #

   public static readonly DependencyProperty RuleType1 = DependencyProperty.Register
   (
      "RuleType1", typeof(int), typeof(EmailNotification), new PropertyMetadata(0)
   );

    public int RuleTypeId
    {
        get { return (int)GetValue(RuleType1); }
        set { SetValue(RuleType1, value); }
    }

XAML

<helper:VisitationHours RuleTypeId="2" />

Этоработает отлично, за исключением того, что я не могу получить RuleTypeId, пока не загрузится элемент управления.Значение по умолчанию всегда равно 0. После загрузки элемента управления я могу получить доступ к любому значению, которое я установил.Как я могу получить доступ к этому значению в конструкторе элемента управления?Спасибо

1 Ответ

2 голосов
/ 12 марта 2012

Во-первых, вы должны исправить имя вашего свойства зависимости:

public static readonly DependencyProperty RuleTypeIdProperty =
    DependencyProperty.Register("RuleTypeId", typeof(int), typeof(EmailNotification), new PropertyMetadata(0)); 

public int RuleTypeId 
{ 
    get { return (int)GetValue(RuleTypeIdProperty); } 
    set { SetValue(RuleTypeIdProperty, value); } 
} 

Тогда, если VisitationHours - это пользовательский элемент управления, для которого вы хотите установить свойство, ответ заключается в том, что вы просто не можете получить доступ к значению в конструкторе элемента управления. Сначала создается объект, затем свойства устанавливаются WPF.

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

...