我有一個看似簡單的任務,這是讓我頭痛,並希望得到一些幫助。綁定問題與RadioButton
我想完成的是將兩個布爾值綁定到兩個RadioButton
的IsChecked屬性,共享相同的GroupName
(因此一次只檢查一個)。
我面臨的問題是,當ContentPresenter的內容即將更改(通過綁定到ComboBox的SelectedItem)時,當前內容會接收對具有相同屬性值的Property-setter的調用而是從即將成爲新內容的視圖模型。 (!)最終的結果是儘管沒有點擊與有問題的屬性綁定的RadioButton,但視圖模型發生了變化。
我已經把together a sample app顯示出這個問題。要重現,運行應用程序,並按照下列步驟操作:在下拉列表
- 選擇「一」 => MyPropery檢查,MyProperty2不是。
- 在combobox中選擇「Three」=>選中MyPropery,MyProperty2不是。
- 雖然仍然選擇「三」,單擊MyProperty2 => MyProperty2選中(也顯示在調試輸出窗口中)
- 選擇「One」在combobox => MyPropery被選中,MyProperty2不是。 請注意調試窗口如何顯示對象「Three」的MyProperty2如何設置爲false
- 在組合框中選擇「Three」=>現在選中兩個Radiobutton(由於#4)。
如果在#3和#4之間,首先在組合框中選擇「Two」以使ContentPresenter顯示另一個視圖(通過DataTemplate選擇),則問題不會出現!
有人可以解釋爲什麼在ContentPresenter交換視圖時爲什麼該屬性設置爲步驟#4,並且可以做些什麼?
+1。 Rachels絕對正確:緩存DataTemplate生成的UIElements,並且UI中的CheckBox分組被激活到ViewModel中,從而搞亂了複選框的狀態。 – SvenG 2012-03-01 15:35:57
所以基本上,GroupName和MVVM/DataTemplates不會混合。 :(我無法使用ListBox解決方案,因爲我必須將RadioButton分開放置,我想我必須使用常規復選框,而不是在虛擬機中處理組合。感謝您的幫助。 – Per 2012-03-01 16:01:37