You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CommunityToolkit.Mvvm:ObservableObject中Task<T>的XAML绑定方法

绑定CommunityToolkit.Mvvm中Task结果到XAML的正确写法

你只需要绑定RequestTask的Result属性即可,同时可以添加TargetNullValue或FallbackValue来处理Task未完成时的显示状态:

修改后的XAML绑定代码:

<TextBlock Text="{Binding RequestTask.Result, TargetNullValue='Loading...', FallbackValue='Not started'}"/>

原理说明

ViewModel中使用的SetPropertyAndNotifyOnCompletion方法,会在Task<T>执行完成后自动触发PropertyChanged通知,此时RequestTask.Result会持有异步方法返回的数值,UI会自动更新显示。

可选:优化加载状态显示

如果需要更直观的加载状态区分,可以结合Task的状态属性做绑定,比如:

<StackPanel Orientation="Horizontal" >
    <TextBlock Text="My value is:"/>
    <TextBlock Text="{Binding RequestTask.Result}" Visibility="{Binding RequestTask.IsCompleted, Converter={StaticResource BooleanToVisibilityConverter}}"/>
    <TextBlock Text="Loading..." Visibility="{Binding RequestTask.IsNotCompleted, Converter={StaticResource BooleanToVisibilityConverter}}"/>
</StackPanel>

(注:需要提前在XAML资源中声明BooleanToVisibilityConverter,也可使用CommunityToolkit.WinUI中的内置转换器)

内容的提问来源于stack exchange,提问作者luk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 18:05:19