gpt4 book ai didi

WPF ListBox 与 CheckBoxes : select the checkbox before checking it

转载 作者:行者123 更新时间:2023-12-05 00:16:07 28 4
gpt4 key购买 nike

问题 :

我有一个列表框,其中列表框是复选框。在第一次单击时,复选框被选中并选中。在第二次单击时,仅设置复选框。可以使用箭头键重新选择不同的复选框。我的目标是,首先选中该复选框,然后再检查(再次单击它),从而消除对箭头键的需要。

目标 :

  • 首次单击时选择项目
  • 在第二次单击时选中复选框

  • 代码 :
    <ListBox Name="Terminals" ItemsSource="{Binding AllTerminals, Mode=OneWay}" IsSynchronizedWithCurrentItem="True">
    <ListBox.ItemTemplate>
    <DataTemplate>
    <CheckBox Content="{Binding Description}" Foreground="{Binding DisplayColor}"/>
    </DataTemplate>
    </ListBox.ItemTemplate>
    </ListBox>

    最佳答案

    通过绑定(bind)禁用 CheckBox 上的点击注册 IsHitTestVisible ListBoxItem 选择状态的属性:

    <ListBox Name="Terminals" ItemsSource="{Binding AllTerminals, Mode=OneWay}" IsSynchronizedWithCurrentItem="True">
    <ListBox.ItemTemplate>
    <DataTemplate>
    <CheckBox Content="{Binding Description}"
    IsHitTestVisible="{Binding Path=IsSelected, RelativeSource={RelativeSource AncestorType=ListBoxItem}}"
    Foreground="{Binding DisplayColor}"/>
    </DataTemplate>
    </ListBox.ItemTemplate>
    </ListBox>

    这样第一次单击将只选择 ListBoxItem 并且可以通过第二次单击选中/取消选中复选框

    将项目添加到 ListBox 后,可视化树如下:
    ListBox
    --ListBoxItem
    --CheckBox
    --ListBoxItem
    --CheckBox
    --ListBoxItem
    --CheckBox

    当用户单击 ListBoxItem 时,它会被选中 (IsSelected=true)。当用户单击 CheckBox 时,它会被选中或取消选中。但是如果 IsHitTestVisible设置为false,点击元素将不会被注册。由于选中/取消选中应该只对选中的项目起作用,我们可以在 CheckBox.IsHitTestVisible 和父 ListBoxItem.IsSelected 之间创建绑定(bind)来实现这样的效果

    关于WPF ListBox 与 CheckBoxes : select the checkbox before checking it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42526265/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com