我开始搜索,完成后我完成了 viewModel,如果我没有找到任何东西,我想显示一条消息。
到目前为止,我有 3 种方法:
1.) 转换App.ViewModel.LoadData()
到异步等待方法,然后开始我的功能。
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)”来启动函数。
hacking 方法很容易,但不是很好:在 viewModel 中,我看到我得到一个空数组,可以填写 1 个特殊的触发词或其他东西,然后在 View 端用 if 询问这个词。会工作,但我不喜欢那样。
有任何想法吗?
最佳答案
首先,警告:不要写async void LoadDataAsync
,写async Task LoadDataAsync
反而。也不要忘记添加Async
到你的功能结束。
现在,您应该具有指示搜索/加载是否正在进行以及是否完成的属性。这些通常用于切换某些 UI 元素的可见性,例如进度条或消息“未加载任何内容”。
这是一个干净的、基于 MVVM 的模式,用于显示正在进行的操作指示器以及显示操作已完成。而且没有结果。
关于c# - 下载viewModel后如何调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22199939/