【问题标题】:Using Listbox in ItemTemplate在 ItemTemplate 中使用列表框
【发布时间】:2008-11-19 10:20:01
【问题描述】:

我有一个listbox 控件。我为这个listbox 创建了一个ItemTemplate,其中有两个控件。

  1. 切换按钮
  2. 列表框控件

结构

<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>

基本上Listbox2CheckedListbox。我的要求如下 1. 将ToggleButton 绑定到Listbox1 SelectedItem,即如果在Listbox1 中选择了第4 项,则应自动选中第4 项的切换按钮,而应取消选中其他切换按钮。 2. 如果ToggleButton 被选中,那么Listbox2 中的所有复选框都应该被自动选中。此外,如果 Listbox2 中的复选框之一未选中,则 ToogleButton 应自动取消选中。 (此功能类似于TreeNode 和子节点功能。如果选中父节点,则选择所有子节点,如果未选择子节点之一,则应取消选择父节点)。

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    示例代码将帮助我们更好地了解您的问题。

    看起来您正在尝试在 UI 上添加一些业务逻辑,尝试创建适当的 ViewModel,然后将其绑定到控件,以便可以在 ViewModel 端完成计算,并根据您的逻辑更新 UI - (INotifyPropertyChanged)

    ViewModel 将具有一个 Bool 属性(绑定到 ToggleButton),该属性会根据其他 3 个 bool(绑定到 4 个复选框)而变化。在 ViewModel 内的任何 setter 调用都必须再次重新计算(这将是一个布尔 AND 操作)整个 Properties。由于CheckBox绑定方式默认为TwoWay,实现起来会非常简单。

    【讨论】:

      猜你喜欢
      • 2011-01-12
      • 1970-01-01
      • 1970-01-01
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-11
      • 1970-01-01
      相关资源
      最近更新 更多