[英]Data Binding Issue in Win8.1 with Caliburn
我在解析用户输入后更新文本框时遇到了一些问题。 我在Windows 8.1商店应用程序中使用caliburn微框架。
我的属性如下所示:
private string mass = "0";
public string Mass
{
get {
return mass;
}
set
{
if (mass != value)
{
mass = value.ParseUserInput();
NotifyOfPropertyChange(() => Mass);
NotifyOfPropertyChange(() => Result);
}
}
}
与
public static string ParseUserInput(this string value)
{
double result;
double.TryParse(value, out result);
return result.ToString();
}
我遇到的问题是,当我输入有效的输入(例如“ 001.0”)时,我希望文本框通过显示“ 1”来更新以反映此问题(已确认质量更改为“ 1”),但仍保持在“ 001.0”
如果我把NotifyOfPropertyChange(()=> Mass); 稍后将在代码中调用该语句,然后文本框将按预期更新,因此我知道绑定在两种方式下工作。 另外,该代码在我的wpf项目中也能完美工作。
任何人都有一些想法(线程问题?)
好的,我将行更改为:
new System.Action(() => base.NotifyOfPropertyChange(() => Mass)).BeginOnUIThread();
而且它的行为符合预期,我有什么主意我认为没有必要这么做的想法,应该吗?
非常感谢您的宝贵时间
我怀疑问题出在WinRT的绑定基础结构中。 我的猜测是,绑定正在忽略大量更改的属性更改通知,因为它感觉到它是告诉您更改的通知。
通过将更改分派给UI线程,您可能会延迟通知的时间,以使绑定不会认为它触发了通知。
不是解决方案,但可以解释为什么需要代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.