我开始搜索,完成搜索后,完成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/