我有一个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,以便我可以添加到属性的当前值。
答案 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