gpt4 book ai didi

WPF:有没有办法在 MultiValueConverter 的 ConvertBack 方法中获取原始值?

转载 作者:行者123 更新时间:2023-12-04 02:08:43 27 4
gpt4 key购买 nike

我编写了一个 MultiValueConverter,它检查给定列表是否包含给定值,如果包含则返回 true。我用它来绑定(bind)到自定义复选框列表。现在我想编写 ConvertBack 方法,以便如果选中复选框,原始值将被发送到模型。有没有办法访问 ConvertBack 方法中的值?

XAML:

<ListBox.ItemTemplate>
<HierarchicalDataTemplate>
<CheckBox Content="{Binding Path=Description}">
<CheckBox.IsChecked>
<MultiBinding Converter="{x:Static Classes:ListContainsMultiConverter.Instance}">
<Binding Path="Id" />
<Binding Path="DataContext.ContactTypes" RelativeSource="{RelativeSource AncestorType={x:Type Window}}" />
</MultiBinding>
</CheckBox.IsChecked>
</CheckBox>
</HierarchicalDataTemplate>
</ListBox.ItemTemplate>

我在绑定(bind)时得到正确的结果,但是有没有办法在转换回来时获取绑定(bind)的 id?我想要实现的是,如果未选中复选框,则该值将从列表中删除,如果选中,则该值将添加到列表中。

最佳答案

我知道这是一个老问题,但这个解决方案可能对其他人有所帮助。

而不是使用 ConvertBack IMultiValueConverter 的方法,可以设置IsChecked绑定(bind)为 OneWay并使用 CheckBox Command属性来执行检查逻辑。

<ListBox.ItemTemplate>
<HierarchicalDataTemplate>
<CheckBox Content="{Binding Path=.}" Command="{Binding Path=CheckBoxCommand, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" CommandParameter="{Binding Path=.}">
<CheckBox.IsChecked>
<MultiBinding Converter="{x:Static Classes:ListContainsMultiConverter.Instance}" Mode="OneWay">
<Binding Path="." />
<Binding Path="SelectedItems" RelativeSource="{RelativeSource AncestorType={x:Type Window}}" />
</MultiBinding>
</CheckBox.IsChecked>
</CheckBox>
</HierarchicalDataTemplate>
</ListBox.ItemTemplate>

然后,添加 CheckBoxCommand 执行类似于此的操作:
    // the items bound to your checkbox
public Collection<string> Items { get; set; }

// the list of selected items
public Collection<string> SelectedItems { get; set; }

private void ExecuteCheckBoxCommand(string obj)
{
SelectedItems.Add(obj);
}

我知道这是一种稍微迂回的方法,但是 IMultiValueConverter.ConvertBack方法真的很没用 - 如果没有访问当前绑定(bind)值,我想不出它有太多用途。

关于WPF:有没有办法在 MultiValueConverter 的 ConvertBack 方法中获取原始值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2239134/

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