2010-06-01 91 views
0

我需要一個包含多個選項的ListBox。我需要確切的(風格)複選框,而不是單選按鈕。有什麼辦法可以讓我只允許1複選框?我使用MVVM,所以我不能手動檢查或取消選中它們,這違反了規則。 如果我不能做出這樣的功能 - 是否有簡單的方式來設置樣式單選按鈕看起來像複選框?帶有複選框和單一檢入的列表框Silverlight

回答

0

除了有缺陷的要求*,唯一的方法是取消選中所有複選框,然後檢查特定索引複選框。

或者交替地(因爲它做同樣的事情,但聽起來更長),遍歷所有指定的複選框,並找到哪一個設置爲true,而不是你想要檢查的,然後將其設置爲false。

  • 有缺陷的要求:一系列複選框向任何用戶表明允許他們選擇零個或多個項目。一系列單選按鈕表示它們只能選擇一個。這是自Windows 3之前就已經被用戶使用的東西,而且所有非IT人員都不會質疑。你會打破他們的心智模式,這比看起來更漂亮。請管理層修改此要求。

HTTH。因人而異。

+0

嗯,這不是我的要求。不幸的是,這是無可爭辯的。我該如何取消所有的chekboxes一次? – Walkor 2010-06-01 20:52:54

+0

@walkor〜我不認爲我理解這個問題。你不知道該怎麼辦? 'foreach(CheckBox中的CheckBox cbx){cbx.Checked = false; }'或者你不知道如何選擇所有相關的複選框或...我認爲,取消選中所有複選框的建議很簡單,但我一直在做很長時間,所以也許建議並不簡單。你告訴我你不明白。你最初如何生成你的複選框?更新你的問題。 – jcolebrand 2010-06-02 01:07:10

+0

我的問題很清楚,我在xaml.cs文件中沒有代碼。我不能在MVVM中調用這個--Freeach(CheckBoxList中的CheckBox cbx)。 – Walkor 2010-06-02 07:43:04

0

如果您使用的是MVVM以及如何堅持「規則」,那麼您的ViewModel應該有一個屬性,複選框將綁定到該屬性。它是ViewModel中的代碼,以確保該屬性的狀態是正確的。

因此,ViewModel中的一個屬性設置爲true的代碼可能需要通過集合進行搜索才能找到其匹配屬性需要強制爲false的相似項目。該視圖然後簡單地反映ViewModel的當前狀態。

+0

嗯,是的,我想到了這個想法,但也希望有更好的辦法。只是爲了確保 - 你建議迭代項目收集,用檢查/未選中狀態標記項目,並使綁定反映這些更改,對吧? – Walkor 2010-06-01 20:58:34

相關問題