您是在WPF中的組合框內實現複選框的人。組合框內的複選框WPF
回答
是的,這是可能的。我已經做了類似的ListView,這本質上是相同的控制。這裏的訣竅是使其成爲FAST。如果你有成千上萬的物品,它不應該花費30秒。
現在,你如何實現它取決於你是否想要構建一個通用控件或專門爲此對象類型創建的控件。原因在於要做到這一點,你需要知道項目對象的哪個屬性是IsChecked。在我的控制下,我創建了一個名爲IsCheckedPath的DP,因此它本着WPF的精神。然後控件會自動將每個對象的IsCheckedPath屬性綁定到相應的複選框。
當主複選框被切換時,您需要遍歷項目並設置屬性值。您有2個選擇:1)反射或2)在設置IsCheckedPath DP時編譯表達式樹。
我做了#2,因爲反射會太慢。
如果你只關心這個特定的對象,並不認爲你會重複使用該控件,那麼你可以跳過這兩個,只需設置屬性。不是一個好主意IMO,我會去通用路線:)。
此外,請注意,您不能採用「快捷方式」並通過視覺效果循環,並從另一側設置複選框,因爲WPF控制虛擬化並且複選框對於滾動出來的項目不會「活動」視圖。
你好,歡迎來到WPF!對於這種情況,它看起來像一個MultiBinding是你正在尋找。由於主複選框可以更改單個複選框,反之亦然,所以綁定應該是雙向的。該MultiBinding將被應用到主複選框,這樣的:
<Checkbox x:Name="MasterCheckBox">
<Checkbox.IsChecked>
<MultiBinding Converter="[Instance of your converter class]" Mode="TwoWay">
<Binding Source="ConversationViewModel.ConversationValues" Convert="{StaticResource PersonFilterTypeToBoolConverter}" ConverterParameter="{x:Static shared:MethodType.Mobile}"/>
<Binding Source="ConversationViewModel.ConversationValues" Convert="{StaticResource PersonFilterTypeToBoolConverter}" ConverterParameter="{x:Static shared:MethodType.Skype}"/>
<Binding Source="ConversationViewModel.ConversationValues" Convert="{StaticResource PersonFilterTypeToBoolConverter}" ConverterParameter="{x:Static shared:MethodType.Landline}"/>
</MultiBinding>
</Checkbox.IsChecked>
您需要還可以創建一個轉換器。上面鏈接的文章描述瞭如何製作一個簡單的轉換器。在你的情況下,因爲綁定是雙向的,所以你需要處理Convert和ConvertBack方法。當主複選框被用戶更改時,ConvertBack方法會運行,因此它必須將多重綁定下的所有綁定設置爲true或false。當一個單獨的複選框發生變化時,Convert方法會運行。在這種情況下,在WPF中,如果所有單個框被選中,則將主複選框的IsChecked設置爲true;如果未選中所有單獨框,則設置爲false;如果混合,則IsChecked應該爲null。 IsChecked可以爲null,因爲該屬性的類型是bool? (可爲空的布爾值),這是WPF中三態複選框的工作原理。
- 1. 選擇所有組合框內的複選框Wpf中的組合框項目
- 2. 帶有複選框的Wpf組合框
- 3. 帶複選框的WPF組合框
- 4. WPF取消選擇帶複選框的複選框 - 複選框組合框
- 5. wpf與複選框組合框 - selecteditem
- 6. WPF - 複選框組合框 - 綁定IsSelected?
- 7. 如何獲取組合框WPF內的複選框的值?
- 8. FLEX4:組合框使用複選框內
- 9. WPF中的多選Select組合框中的複選框的PreviewKeyDown
- 10. 組合框與複選框
- 11. WPF分組的複選框
- 12. 複選框內的列表框 - WPF
- 13. c#wpf組合框選擇
- 14. 多選組合框,WPF
- 15. 帶有複選框的MVVM WPF組合框
- 16. WPF的組合框複選框檢查,以不同的源大於內容(MVVM)
- 17. 無法取消選中組合框內的複選框
- 18. 綁定ischecked選擇wpf列表框中的複選框已更改組合框
- 19. ExtJS的組合框使用複選框
- 20. 帶複選框的ExtJs 4組合框
- 21. 組合框與複選框的下拉
- 22. 定製的組合框複選框
- 23. 組合框上的複選框
- 24. wpf組合框的選定值不顯示在組合框上
- 25. 組合框重複選項
- 26. Laravel組合複選框
- 27. 複雜WPF的組合框Caliburn.Micro
- 28. WPF - 組合框的複雜綁定
- 29. 如何自定義組合框內的複選框文本?
- 30. 如何在c#中的組合框內添加複選框
這並沒有解決我的問題,我已經縮小到IValueConverter,但我不知道如何解決它,我現在將添加IValueConverter。 –