来自CommunityToolkit.Mvvm的ObservableObject具有允许异步绑定到Task<T>
(https://github.com/MicrosoftDocs/CommunityToolkit/blob/main/docs/mvvm/ObservableObject.md#handling-taskt-properties的API)
问题是示例中不包含XAML部件,我不知道绑定应该是什么样子.
谁能给我展示一下下面的例子:
public partial class MainWindowViewModel : ObservableObject
{
[RelayCommand]
private void RequestValue()
{
RequestTask = LoadAsync();
}
private TaskNotifier<int>? requestTask;
public Task<int>? RequestTask
{
get => requestTask;
private set => SetPropertyAndNotifyOnCompletion(ref requestTask, value);
}
private static async Task<int> LoadAsync()
{
await Task.Delay(3000);
return 5;
}
<Window>
<Window.DataContext>
<local:MainWindowViewModel/>
</Window.DataContext>
<StackPanel>
<Button Command="{Binding RequestValueCommand}" Content="Get my value"/>
<StackPanel Orientation="Horizontal" >
<TextBlock Text="My value is:"/>
<TextBlock Text="{Binding ?????????}"/>
</StackPanel>
</StackPanel>
</Window>
我希望在按钮被点击后,它等待3秒,然后我的值被更改为5.
我已经判断了他们的示例应用程序,但只绑定到Task
,没有绑定到Task<T
&>(https://github.com/CommunityToolkit/MVVM-Samples/blob/master/samples/MvvmSampleUwp/Views/ObservableObjectPage.xaml)