wpf 当绑定到null属性的TextBox变为null时,不会引发PropertyChanged

wpx232ag  于 2023-05-30  发布在  其他
关注(0)|答案(1)|浏览(289)

我有这块地和房产

private long? _defautID;
public long? DefautID
{
    get => _defautID;
    set
    {
        if (_defautID != value)
        {
            _defautID = value;
            OnPropertyChanged();
        }
    }
}

链接到文本框

<TextBox Content="{Binding 
                   Path=Expertise.DefautID, UpdateSourceTrigger=PropertyChanged}"/>

当我在文本框中添加或删除一个数字时,我的属性会被更新,PropertyChanged会被触发,没有任何问题。
但是当我删除最后一个数字并且我的文本框变为空时,我的属性不会更新(它保留最后一个已知值),因此PropertyChanged不会被触发。
这种行为有什么原因吗?是否有变通方案?
PropertyChanged实现:

public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
xghobddn

xghobddn1#

设置绑定的TargetNullValue属性:

<TextBox Text="{Binding 
    Path=Expertise.DefautID, UpdateSourceTrigger=PropertyChanged, TargetNullValue=''}"/>

这是将TextBox中的emtpy字符串成功转换为default(long?)以及设置属性所必需的。

相关问题