2010-04-22 20 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已經初始化並且有一個給定的值?

或者應該如何正確完成?

在我的情況下,A是像AllowLateBinding ..

要挾回調幫助我嗎?

回答

0

你可以通過在DependencyProperty的定義中提供一個默認值,或者你可以在你的類構造函數中設置默認值。

當您註冊依賴屬性時,您可以指定一個給出默認值的PropertyMetadata對象。

例如,看看DependencyProperty.Register方法。

+0

我認爲,我們跑了誤解,因爲我有一個默認值,它是假的。現在如果有人使用Control並設置A =「true」,那麼在將項目加載到控件之前必須能夠讀取true(在重寫的ItemsSource已更改的方法中說出) – 2010-04-22 14:08:45

1

我不知道是否正確,但根據您的具體程序邏輯,這可能工作:

protected override void OnItemsSourceChanged(IEnumerable oldValue, IEnumerable newValue) 
{ 
    if (IsInitialized) 
    { 
    DoWork(oldValue, newValue); 
    } 
    else 
    { 
    Initialized += (sender, e) => { DoWork(oldValue, newValue); }; 
    } 
}