在扩展器中使用复选框作为切换按钮
我对 wpf 很陌生,必须解决以下问题。
我需要创建一个可以扩展(扩展器)的项目列表(我正在使用列表框)。 问题是,只有当它们被“选择”时,它们才能被扩展。 每个列表框项目应该有一个复选框和一些文本。
这是一个非常基本的例子来说明我的意思:
<listbox>
<item>(checkbox) John Doe</item>
<item>(checkbox) Mike Murray</item>
</listbox>
如果列表框中的任何一个(允许多个)复选框被选中,那么 该项目展开显示更多数据。
再举一个例子:
<listbox>
<item>
(checkbox-checked) John Doe
Some extra data shown in expanded area
</item>
<item>
(checkbox-unchecked) Mike Murray</item>
</listbox>
我无法让扩展器使用复选框作为“切换按钮”。
有人可以帮我吗?一些示例代码将非常受欢迎......
Im quite new to wpf and have to following problem.
I need to create a List (i am using a listbox) of items that can be expanded (expander).
The problem is, that they can be expanded, only if they have been 'selected'.
Each listboxitem should have a checkbox and some text.
So very basic example to illustrate what i mean:
<listbox>
<item>(checkbox) John Doe</item>
<item>(checkbox) Mike Murray</item>
</listbox>
If any (so multiple is allowed) of the checkboxes in the listbox are checked, then
the item expands showing more data.
Again an example:
<listbox>
<item>
(checkbox-checked) John Doe
Some extra data shown in expanded area
</item>
<item>
(checkbox-unchecked) Mike Murray</item>
</listbox>
I cant get a expander to use a checkbox as 'togglebutton'.
Could anyone help me out? Some example code would be very welcome...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这应该可以解决问题:
我在这里定义了一个
Style
,它可以更改Expander
控件的Template
,而Style< /code> 已应用。 (由于我已将
Style
放入ListBox.Resources
中,它将自动应用于列表中的Expander
控件。)让
CheckBox
工作的技巧是,当您将它(或任何基于ToggleButton
的控件)放入Expander
模板时,您需要使用将其RelativeSource
设置为TemplatedParent
的数据绑定。这可以实现双向绑定 - 这意味着CheckBox
不仅可以反映扩展器的当前状态,还可以更改当前状态。This should do the trick:
I've defined a
Style
here that changes theTemplate
of anyExpander
controls to which theStyle
is applied. (And since I've put theStyle
in theListBox.Resources
it'll automatically apply to anExpander
controls in the list.)The trick to getting the
CheckBox
to work is that when you put it (or indeed anyToggleButton
based control) into anExpander
template, you need to use a data binding configured with itsRelativeSource
set to theTemplatedParent
. This enables two-way binding - it means that not only does theCheckBox
reflect the current state of the expander, it is also able to change the current state.您需要在标题中添加一个复选框就是以下代码:
我正在使用 Rad Control,使用标准扩展器也可以完成相同的操作
All you need to add a check box in the header is this code:
I am using Rad Control, The same can be done using the standard expander