解析用户输入后,我在更新文本框时遇到了一些问题。 我在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();
并且这表现得像预期的那样,任何想法为什么我必须这样做,因为我认为它不应该是必要的,是吗?
非常感谢你的时间
答案 0 :(得分:0)
我怀疑问题出在WinRT的绑定基础结构中。我的猜测是绑定是忽略了你的属性更改通知质量,因为它感觉它是告诉你它已经改变的那个。
通过将更改分派给UI线程,您可能会将通知推迟到足以使绑定认为它不会触发通知。
不是解决方案,但它可以解释为什么需要代码。