gpt4 book ai didi

c# - 当绑定(bind)到 'SelectedItem' 时,如何让 Combobox 设置 null 值?

转载 作者:太空宇宙 更新时间:2023-11-03 14:48:32 25 4
gpt4 key购买 nike

我有一个组合框,我要用它添加一个 <x:Null/>一开始,因为“null”是绑定(bind)属性的完全有效值,但 WPF 似乎不愿意设置它。这是 XAML:

<ComboBox SelectedItem="{Binding PropertyName}">
<ComboBox.ItemsSource>
<CompositeCollection>
<x:Null/>
<CollectionContainer Collection="{Binding (available items)}"/>
</CompositeCollection>
</ComboBox.ItemsSource>
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name, FallbackValue='(None)'}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>

收藏在(available items)具有 Name 的对象属性(property)。组合框正确显示 (None)当前值为PropertyName时为空,当我选择一个项目时它设置为集合中的一个项目,但是当我选择 (None) 时,它不会将属性设置为 null。有什么办法可以让它这样做吗?

最佳答案

替换<x:Null>使用某物的实际实例并使用转换器:

public class Converter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) => value;

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) =>
value is short ? null : value;
}

XAML:

<ComboBox>
<ComboBox.SelectedItem>
<Binding Path="PropertyName">
<Binding.Converter>
<local:Converter />
</Binding.Converter>
</Binding>
</ComboBox.SelectedItem>
<ComboBox.ItemsSource>
<CompositeCollection xmlns:sys="clr-namespace:System;assembly=mscorlib">
<sys:Int16 />
<CollectionContainer Collection="{Binding Source={StaticResource items}}"/>
</CompositeCollection>
</ComboBox.ItemsSource>
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name, FallbackValue='(None)'}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>

关于c# - 当绑定(bind)到 'SelectedItem' 时,如何让 Combobox 设置 null 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52949219/

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