2010-04-22 4 views
0

XAML:Как читать свойство зависимостей от метода

<my:Control ItemsSource="{StaticResource MySource}" A="true" /> 

Предположит управление со свойством зависимостей A со значением по умолчанию false; и способ для обработки исходной Коллекции:

protected override void OnItemsSourceChanged(System.Collections.IEnumerable oldValue, System.Collections.IEnumerable newValue) {} 

, в котором вы хотите посмотреть на A и считывания его значения (что верно). Как бы вы гарантировали, что A уже инициализирован и имеет заданное значение?

Или как это должно быть сделано правильно?

В моем случае это что-то вроде AllowLateBinding ..

Может принуждать обратный вызов мне помочь?

ответ

0

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

Когда вы регистрируете свойство зависимости, вы можете указать объект PropertyMetadata, который дает значение по умолчанию.

Посмотрите на метод DependencyProperty.Register.

+0

Я думаю, что мы провели в недопонимания, потому что у меня есть значение по умолчанию для A, и это ложь. Теперь, если кто-либо использует элемент управления и устанавливает A = «true», я должен иметь возможность читать true, прежде чем загружать элементы в элемент управления (говорится в переопределенном методе с измененным параметром ItemsSource) –

1

Я не уверен в правильности, но в зависимости от конкретной программной логики, это может работать:

protected override void OnItemsSourceChanged(IEnumerable oldValue, IEnumerable newValue) 
{ 
    if (IsInitialized) 
    { 
    DoWork(oldValue, newValue); 
    } 
    else 
    { 
    Initialized += (sender, e) => { DoWork(oldValue, newValue); }; 
    } 
} 
Смежные вопросы