gpt4 book ai didi

wpf - 将复选框列表绑定(bind)到选中值列表的最简单方法是什么

转载 作者:行者123 更新时间:2023-12-04 01:39:03 25 4
gpt4 key购买 nike

我有一个 AvailableItems 的列表我想显示为复选框列表,以便用户可以选择要生成的项目,然后将其存储在另一个名为 ItemsToGenerate 的列表中(我的列表实际上只是字符串列表)。

用相应的复选框显示所有可用项目很容易:

<ItemsControl ItemsSource="{Binding Path=AvailableItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

但是现在我需要将每个 Checkbox.IsChecked 属性绑定(bind)到该项目位于 ItemsToGenerate 中的事实。列表。我想制作一个 ListContainmentToBoolConverter像这样:
IsChecked="{Binding Path=ItemsToGenerate, 
Converter={StaticResource ListContainmentToBoolConverter}}"

但这不起作用,因为我错过了 ConverterParameter传递每个项目的值,但我不能这样做,因为 ConverterParameter不支持绑定(bind)。

有任何想法吗?

最佳答案

我找到了解决我的问题的方法。

我改变了我的ItemsControlListBox ,并在 SelectedItems 与我的 ItemsToGenerate 之间添加了绑定(bind)。使用所描述的技术收集 here .它基本上允许我将任何自定义集契约(Contract)步到 ListBox.SelectedItems使用简单的附加属性。

<ListBox ItemsSource="{Binding AvailableItems}"
Behaviors:MultiSelectorBehaviours.SynchronizedSelectedItems=
"{Binding ItemsToGenerate}"
SelectionMode="Multiple"
Background="{x:Null}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding}"
Margin="3"
IsChecked="{Binding RelativeSource=
{RelativeSource Mode=FindAncestor,
AncestorType={x:Type ListBoxItem}},
Path=IsSelected}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ListBox>

通过添加一个数据模板来更改每个 ListBoxItem,我仍然能够按照我最初想要的方式显示它(复选框列表)。到一个复选框并绑定(bind)每个 Checkbox.IsCheckedListBoxItem.IsSelected .

我的应用程序的很多地方都有这种模式,这对我来说是理想的解决方案,因为现在我只需要指定一个附加属性,其余的都由数据绑定(bind)处理,我不需要任何额外的代码。

关于wpf - 将复选框列表绑定(bind)到选中值列表的最简单方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/782980/

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