繁体   English   中英

带Caliburn的Win8.1中的数据绑定问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM