视窗8。地铁应用。XAML异步绑定

视窗8。地铁应用。XAML异步绑定,xaml,binding,asynchronous,microsoft-metro,Xaml,Binding,Asynchronous,Microsoft Metro,问题在于将长时间操作getter绑定到UI控件。 例如,如果我有如下属性: public string ButtonText { get { Task.Delay(3000).Wait(); return _buttonText; } set { _buttonText = value; } } 并在XAML中将其绑定到UI控件,如:Content=“{Binding buttonext}”UI线程

问题在于将长时间操作getter绑定到UI控件。 例如,如果我有如下属性:

public string ButtonText
{
    get
    {
        Task.Delay(3000).Wait();
        return _buttonText;
    }
    set
    {
        _buttonText = value;
    }
}
并在XAML中将其绑定到UI控件,如:
Content=“{Binding buttonext}”
UI线程将被阻止。WPF中有一个
Binding.IsAsync
属性,允许在后台加载绑定的数据,但Metro框架中没有这样的属性


有人知道如何在metro应用程序中进行异步绑定吗?

Microsoft故意更改了一系列类似的内容,以鼓励您不要在属性getter/setter中执行需要您异步获取属性的操作。不阻塞UI线程的“新”方法是执行类似于
wait Task.Delay(3000)
的操作,而不是使用
Binding.IsAsync
<代码>等待阻止执行,但不阻止线程(这正是您要做的)

这是有关.NET 4.5上C#中的
wait
关键字的更多信息的页面。页面底部的示例很好地说明了代码应该是什么样子


但我如何才能在酒店内呼叫Wait?