我开始搜索,完成搜索后,完成viewModel,如果我什么都没找到,我想显示一条消息。

到目前为止,我有3种方法:

1.)将App.ViewModel.LoadData()转换为async-await-method,然后启动我的功能。

2)执行与此类似的操作,但具有以下功能:

void NewSearch_Loaded(object sender, RoutedEventArgs e)
{
    Binding binding = new Binding("IsLoadingJobs") { Source = DataContext };
    BindingOperations.SetBinding(
        prog, ProgressIndicator.IsIndeterminateProperty, binding);
}

3.)骇客。

1.方法不能很好地工作,因为我以前从未使用过async-await,而且似乎并不容易。
2.方法听起来更容易,但是我找不到任何“绑定(bind)”来启动函数。
这种黑客方法很容易,但效果并不好:在viewModel中,我看到我得到一个空数组,可以填充1个特殊的触发词或类似的东西,然后在 View 侧用if询问这个词。可以,但是我不喜欢这样。

有任何想法吗?

最佳答案

首先,警告:不要写async void LoadDataAsync,而要写async Task LoadDataAsync。同样不要忘记在函数的末尾添加Async

现在,您应该具有指示搜索/加载是否正在进行以及是否完成的属性。这些通常用于切换某些UI元素的可见性,例如进度条或消息“什么都没有加载”。

这是一个干净的基于MVVM的模式,用于显示进行中的操作指示器以及表明操作已完成。而且没有结果。

关于c# - 下载viewModel后如何调用函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22199939/

10-17 01:08