Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ItemTemplate中使用Listbox_C#_Wpf - Fatal编程技术网

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操作)整个属性。由于复选框绑定模式默认为双向,因此很容易实现