在应用程序加载中,在文本框中显示空值,该值绑定到GUID属性

时间:2016-06-10 15:49:56

标签: wpf c#-4.0 data-binding

在我的WPF XAML中,我有一个文本框,它绑定到viewModel中的GUID属性,在应用程序加载时我想将此文本框显示为空而不是00000000-0000-0000-0000-000000000000 以下是我的XMAL和VM代码,

<TextBox Text="{Binding DocId, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, ValidatesOnExceptions=True ,
                TargetNullValue= '', NotifyOnValidationError=True}"></TextBox>

private Guid _docId;
    public Guid DocId
    {
        get { return _docId; }
        set
        {
            _docId = value;
            OnPropertyChanged("DocId");
        }
    }

我尝试设置TargetNullValue= ' '但它无效,在应用程序加载时,UI中的文本框值显示为00000000-0000-0000-0000-000000000000。我也尝试设置FallbackValue = '',但结果仍然相同。有什么建议吗?我是WPF的新手,我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果只需要显示字符串,可以使TextBox只读和单向绑定。然后从Guid的set访问器中引发依赖字符串属性的更改。

在视图中:

<Grid>
        <TextBox IsReadOnly="True" Text="{Binding GuidStr, Mode=OneWay,

在ViewModel中:

private Guid _docId;
public Guid DocId
{
    get { return _docId; }
    set
    {
        _docId = value;
        OnPropertyChanged("DocId");
        OnPropertyChanged("GuidStr");
    }
}
public string GuidStr
{
    get { return _docId.ToString().Replace("00000000-0000-0000-0000-000000000000", ""); }
}