问题在于将长时间操作 getter 绑定到 UI 控件。例如,如果我有这样的属性:
public string ButtonText
{
get
{
Task.Delay(3000).Wait();
return _buttonText;
}
set
{
_buttonText = value;
}
}
并将其在 XAML 中绑定到 UI 控件,例如:Content="{Binding ButtonText}"
UI 线程将被阻止。WPF 中有一个Binding.IsAsync
属性允许在后台加载绑定的数据,但 Metro 框架中没有这样的属性。
有人对如何在 Metro 应用程序中进行异步绑定有任何想法吗?