C# 在ItemTemplate中使用Listbox
我有一个C# 在ItemTemplate中使用Listbox,c#,wpf,C#,Wpf,我有一个列表框控件。我为这个列表框创建了一个ItemTemplate,其中有两个控件 切换按钮 列表框控件 结构 <Listbox x:Key="Listbox1" ItemTemplate={StaticResource ListBox1ParentItemTemplate}> </Listbox> <Datatemplate x:Key="ListBox1ParentItemTemplate"> <ToggleButton><
列表框
控件。我为这个列表框创建了一个ItemTemplate
,其中有两个控件
切换按钮
列表框控件
结构
<Listbox x:Key="Listbox1" ItemTemplate={StaticResource ListBox1ParentItemTemplate}>
</Listbox>
<Datatemplate x:Key="ListBox1ParentItemTemplate">
<ToggleButton></ToggleButton>
<Listbox x:Key="Listbox1" ItemTemplate={StaticResource ListBox2ParentItemTemplate}>
</Listbox>
</Datatemplate>
<Datatemplate x:Key="ListBox2ParentItemTemplate">
<TextBlock Text="{Binding Mode=Default, XPath=@Description}" TextWrapping="Wrap"/>
<CheckBox DockPanel.Dock="Right" />
</Datatemplate>
基本上,Listbox2
是一个CheckedListbox
。我的要求如下
1.将ToggleButton
绑定到Listbox1 SelectedItem
,即如果在Listbox1
中选择了4项,则应自动选中第4项的ToggleButton,并取消选中其他ToggleButton。
2.如果选中了切换按钮
,则应自动选中列表框2
中的所有复选框。此外,如果未选中Listbox2
中的一个复选框,则应自动取消选中ToogleButton
。(此功能类似于TreeNode
和childnode功能。如果选中了parentnode,则会选中所有childnode,如果其中一个childnode未选中,则应取消选中parentnode)。示例代码将帮助我们更好地了解您的问题
看起来您正在尝试向UI添加一些业务逻辑,尝试创建适当的ViewModel,然后将其绑定到控件,以便可以在ViewModel端进行计算,并根据您的逻辑更新UI—(INotifyPropertyChanged)
ViewModel将具有一个Bool属性(绑定到ToggleButton),该属性将根据其他3个Bool(绑定到4个复选框)进行更改。在ViewModel内部的任何setter调用中,都必须重新计算(这将是一个布尔AND操作)整个属性。由于复选框绑定模式默认为双向,因此很容易实现。示例代码将帮助我们更好地理解您的问题
看起来您正在尝试向UI添加一些业务逻辑,尝试创建适当的ViewModel,然后将其绑定到控件,以便可以在ViewModel端进行计算,并根据您的逻辑更新UI—(INotifyPropertyChanged)
ViewModel将具有一个Bool属性(绑定到ToggleButton),该属性将根据其他3个Bool(绑定到4个复选框)进行更改。在ViewModel内部的任何setter调用中,都必须重新计算(这将是一个布尔AND操作)整个属性。由于复选框绑定模式默认为双向,因此很容易实现