您可以使用^
流绑定运算符订阅任务或可观察对象。
例如,如果DataContext.Name
是一个IObservable<string>
,那么下面的示例将绑定到每个值生成时可观察对象的每个字符串的长度。
<TextBlock Text="{Binding Name^.Length}"/>
如果需要做一些繁重的工作来加载属性的内容,则可以绑定到async Task<TResult>
的结果。
假设您有下列的视图模型,它在一个耗时的任务中生成一些文本:
public Task<string> MyAsyncText => GetTextAsync();
private async Task<string> GetTextAsync()
{
await Task.Delay(1000); // 延时只是为了演示
return "Hello from async operation";
}
您可以通过以下方式绑定到结果:
<TextBlock Text="{Binding MyAsyncText^, FallbackValue='Wait a second'}" />
{% hint style="info" %}
注:您可以使用FallbackValue
显示一些加载指示符。
{% endhint %}