C# 在视图中需要而不是在更改时更新DP
例如,假设我有一个组合框,其itemsSource绑定到一个依赖属性。绑定列表值可以根据许多因素进行更改。计算这些值需要相当长的时间,因此除非必要,否则我不希望应用程序更新集合。在MVVM中,只有当视图中需要数据时(即组合框下拉时),才“延迟”更新绑定属性的正确方法是什么?我将向C# 在视图中需要而不是在更改时更新DP,c#,wpf,mvvm,C#,Wpf,Mvvm,例如,假设我有一个组合框,其itemsSource绑定到一个依赖属性。绑定列表值可以根据许多因素进行更改。计算这些值需要相当长的时间,因此除非必要,否则我不希望应用程序更新集合。在MVVM中,只有当视图中需要数据时(即组合框下拉时),才“延迟”更新绑定属性的正确方法是什么?我将向视图模型添加一个方法: class ViewModel { public void Refresh() { // ... } // ... } 。。。必要时在你的控制下打电话
视图模型添加一个方法:
class ViewModel {
public void Refresh() {
// ...
}
// ...
}
。。。必要时在你的控制下打电话
class Control : UserControl {
private ViewModel ViewModel = new ViewModel();
void OnDropDown() {
ViewModel.Refresh();
}
// ...
}
您的ViewModel应该知道屏幕上的所有绑定数据,因此您的ViewModel将以某种方式获取下拉列表中的数据
触发抓取的通常是ViewModel中的一个“命令”,它通常来自按钮单击或任何其他视图事件。谢谢,这是有道理的,也是我所倾向的。也就是说,OnDropDown msdn引用没有说明事件的触发时间。你知道是在下拉列表下降之前还是之后吗?没有previewDropDown事件。@ach--不确定,但您可以尝试捕获MouseDown事件。