您是在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。 –