2012-07-26 43 views
0

我不知道這甚至有可能,但這裏是我的設置:依賴項屬性不顯示在初始化

我有一個定製的文本框是隻是爲了對付熱鍵選擇。在這裏我有一個DependencyProperty這是SelectedHotKey

然後我有一個自定義控件是一個標籤,文本框和一個按鈕。這種控制也暴露了同名的文本框的DependencyProperty,它只是通過捆綁到TextBox:

SelectedHotKey="{Binding ElementName=Main, Path=SelectedHotKey, Mode=TwoWay}" 

有了這個依賴屬性,我期待以設置文本框的SelectedHotKey,這將相應地更改Text

我然後使用該用戶控件和綁定到我的ViewModel。

除了初始化情況,我已經可以工作了。

當我的ViewModel已經建立並傳遞給綁定中的UserControl時,該初始設置器甚至沒有命中,所以它不會傳播我的控件。我想過放入一個PropertyMetaData方法,但是這是一個靜態方法,我無法訪問我的實例文本框。

任何想法?如果我需要進一步澄清,請告訴我。

+0

也許這可以幫助:'SelectedHotKey = 「{綁定的ElementName =主,路徑= SelectedHotKey,模式=雙向,UpdateSourceTrigger =的PropertyChanged}」 ...' – Dante 2012-07-26 22:58:44

回答

3

請勿將代碼邏輯放在CLR屬性中,以包裝依賴項屬性。正如您已經看到的,由於框架可以直接在依賴項屬性上調用SetValue,所以不能保證它們將被調用。

您處於正確的軌道:您必須使用依賴項屬性元數據。通過使用屬性更改回調的第一個參數訪問實例。

DependencyProperty SomeProperty = DependencyProperty.Register(
    "Some", 
    propertyType, 
    ownerType, 
    new FrameworkPropertyMetadata(defaultValue, OnSomePropertyChanged)); 

static void OnSomePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { 
    // "d" is your instance here, cast it to the required type 
} 
+0

Oy公司,你知道,我想過尋找到什麼參數會投射爲,但我已經花費了太多時間,並且認爲我會問這裏,如果沒有答案,在AM中嘗試更多。這正是我需要的。太感謝了 – 2012-07-27 04:40:01