gpt4 book ai didi

WPF 数据绑定(bind)绑定(bind)错误通知

转载 作者:行者123 更新时间:2023-12-05 00:08:55 25 4
gpt4 key购买 nike

好的,在 WPF(使用 MVVM)上工作并遇到一个问题,需要一些输入。我有一个简单的类(class)

如下所示(假设我实现了 IDataErrorInfo):

public class SimpleClassViewModel
{
DataModel Model {get;set;}
public int Fee {get { return Model.Fee;} set { Model.Fee = value;}}
}

然后我尝试在 xaml 中绑定(bind)它:
<TextBox Text={Binding Fee, ValidatesOnDataErrors=true}/>

当用户随后清除文本时,会发生数据绑定(bind)错误,因为它无法将 string.empty 转换为 int。好吧,费用是必填字段,但由于数据绑定(bind)不会转换回来,我无法提供错误信息,因为我的类(class)没有更新。那么我是否需要执行以下操作?
public class SimpleClassViewModel
{
DataModel Model {get;set;}
int? _Fee;
public int? Fee
{
get { return _Fee;}
set { _Fee = value;if (value.HasValue) { Model.Fee = value;}
}
}

最佳答案

这可以使用 ValueConverter 来完成:

using System.Windows.Data;

namespace MyNameSpace
{
class IntToStringConverter:IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return ((int) value).ToString();
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
int result;
var succes = int.TryParse((string) value,out result);
return succes ? result : 0;
}
}
}

您因此在 XAML 中引用它:
<Window xmlns:local="clr-namespace:MyNameSpace">
<Window.Resources>
<local:IntToStringConverter x:Key="IntConverter"/>
</Window.Resources>
<TextBox Text={Binding Fee, ValidatesOnDataErrors=true,
Converter={StaticResource IntConverter}}/>
</Window>

关于WPF 数据绑定(bind)绑定(bind)错误通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/966430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com