2009-07-27 84 views
3

我有嵌套的groupboxes,它在邏輯上表示我的應用程序中的嵌套數據結構。比方說,我有這樣的結構:將屬性綁定到另一個屬性

Dev1 
- CDev1 
- CDev2 
    - ICDev1 
    - ICDev2 

我有複選框來啓用/禁用每個這些Devs。我想將子複選框的CheckState綁定到父複選框的CheckState。我希望機制能夠像這樣工作:當我檢查CDev2時,ICDev1會自動檢查ICDev2。但是當我取消選中ICDev1時,CDev2保持其自己的狀態。基本上,我想這些事件傳播給孩子,但不是父母,像一種方式綁定。

我正在使用.Net 2.0 SP2。我不知道這是否可行,因此如果你向我展示一些關於此的指示,我會很高興。如果這是不可能的,我將爲所有複選框實現事件處理程序。

回答

5

試試這個:

childCheckBox.DataBindings.Add("Checked", parentCheckBox, "Checked"); 

你可能也想看看的TreeView控制,它具有顯示CheckBox每個項目旁邊的選項。

0

這在理論上可以使用WPF中的雙向綁定(這裏是tutorial on data binding in WPF)。我不認爲你可以使用WinForms自動完成它。如果您使用WinForms,則必須捕獲並處理事件以手動修改此類狀態更改。

0

綁定無法解決您的問題。如果您找到了將ICDev1和ICDev2綁定到CDev2的方法,那麼這意味着當ICDev1被選中時,ICDev1和ICDev2都會被檢查,反之亦然。如果這是你想要的,你不需要ICDev1,ICDev2的複選框,只需要CDev2。如果您希望用戶檢查ICDev1,但取消選中ICDev2,則需要實現事件處理程序。

0

有可能在WPF,但我不認爲這是可能的WinForms因爲沒有像依賴屬性屬性更新事件機制或WinForms的INotifyPropertyChanged的

0

看看here,而link到Kent Boogart的桁架庫,完全避開了winforms。儘管它可能需要一些子類,這取決於你的模型,因爲它的工作方式類似於wpf綁定。