iNotify:int from Code,String to XAML

时间:2017-08-11 15:21:12

标签: c# inotifypropertychanged

我有一个iNotifyChange属性绑定到我的XAML中的标头。我想要的是从后面的代码能够更新一个int值,但让字符串返回到XAML。即代码将属性更新为6,XAML更新为"警告:6"。问题是属性的类型与其返回类型不同。我该如何修改以下内容才能使其正常工作?

<Expander Header="{Binding Path=DATErrorsHeader, UpdateSourceTrigger=PropertyChanged}">

private int _overallError;
public string ErrorsWarningsHeader
{
    get { return "Warnings: " + _overallError.ToString(); }
    set
    {
        int.TryParse(value, out _overallError);
        NotifyPropertyChanged();
    }
}

public event PropertyChangedEventHandler PropertyChanged;

protected virtual void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
    var handler = PropertyChanged;
    if (handler != null)
        handler(this, new PropertyChangedEventArgs(propertyName));
}

在代码中,我基本上在做;

viewModel.ErrorsWarningsHeader = "6";

我希望这是一个int,以便我可以添加到属性的当前值。

2 个答案:

答案 0 :(得分:1)

您可以添加由类中相同字段支持的其他数据类型的另一个属性。

public int ErrorsWarningsHeaderInt
{
    get { return _overallError; }
    set
    {
        // TODO: Validation of 'value'
        _overallError = value;
        NotifyPropertyChanged(nameof(ErrorsWarningsHeader));
    }
}

答案 1 :(得分:1)

这是编写自己的Converter的好例子。您可以创建一个继承自class的{​​{1}}并实施IValueConverter方法。

有了这个,导入比命名空间更新到Convert,你可以在xaml中找到如下:

xaml