WPF 组合框绑定:记住最后一个值,而不是显示 null
本文关键字:null 显示 最后一个 组合 绑定 WPF | 更新日期: 2023-09-27 18:33:53
我想使用组合框来显示 Contact3,如果 Contact3 为空,则为空。
My ViewModel 有一个 CurrentSample 属性,它是包含以下控件的堆栈面板的 DataContext。
当 CurrentSample.Contact3 != null 时,绑定工作正常。
当 CurrentSample 更改为具有 Contact3==null 的示例时,文本框绑定工作正常,但组合框会记住最后一个非 null 值。
我试图创建一个简单的示例来演示行为,但这工作正常!在我的简单示例中,当 CurrentSample.Contact3==null 时,组合框为空。
我的完整程序是使用 EF 代理。当它即将出错时,绑定输出会告诉我我的 DataObject 是一个代理。
我尝试过将 OurPeople2 设为集合和 CollectionViewSource,并且带有和不带空条目。
请记住,只有您才能将这个项目从(另一个(丑陋的笨蛋中拯救出来......尼克(在.Net 4.5中(
<TextBox Text="{Binding Path=Contact3.Surname, Mode=OneWay}"/>
<ComboBox
ItemsSource="{Binding Source={StaticResource Locator}, Path=Main.OurPeople2}"
SelectedItem="{bindings:ChilliBinding Path=Contact3}"
DisplayMemberPath="Surname"
IsSynchronizedWithCurrentItem="True" />
还行。问题是这个。ChilliBinding 是一个包含多个参数的方便类。
public class ChilliBinding:Binding
{
public ChilliBinding():base()
{
Mode=BindingMode.TwoWay;
UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
ValidatesOnDataErrors = true;
NotifyOnValidationError = true;
TargetNullValue = "";
}
}
TargetNullValue 允许用户在文本框中提供空字符串以指定空值。不适用于组合框。也许绑定尝试将视图模型中的 null 值转换为 ",然后在组合框中找不到该值。
我引入了一个新的便利类ChilliBindingForCombo,它没有设置TargetNullValue。顺便说一句,要将组合的值设置为 null,我不需要在组合框中有一个空值,因为我有一个包含标签、组合框和"将组合设置为 null"按钮的用户控件。
使用如下FallbackValue
: <TextBox Text="{Binding Path=Contact3.Surname, Mode=OneWay}, FallbackValue={x:Null}"/>
祝你好运。