视窗8。地铁应用。XAML异步绑定
问题在于将长时间操作getter绑定到UI控件。 例如,如果我有如下属性:视窗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线程
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?