【发布时间】:2013-12-23 13:12:14
【问题描述】:
我在解析用户输入后更新文本框时遇到了一点问题。 我在 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();
这表现如预期,任何想法为什么我必须这样做,因为我认为它不应该是必要的,不是吗?
非常感谢您的宝贵时间
【问题讨论】:
标签: c# windows-8 binding windows-runtime caliburn.micro