我遇到了一个问题我很惊讶我找不到任何讨论(除了WPF MVVM ComboBox SelectedItem or SelectedValue not working之外)。
我有一个MVVM表单有2个ctors,一个用于“新项目创建”,另一个用于“项目修改”。我有一个代表项目属性之一的组合框。
在修改ctor中,初始化绑定到ItemsSource的属性,然后设置绑定到SelectedItem的属性。但是在UI中没有选择任何内容,除非我延迟(甚至一点点)SelectedItem集。
我该如何解决这个问题?我不能保持一个完全随机的间隔计时器来解决问题:D
感谢您的帮助
答案 0 :(得分:0)
public MyViewModel()
{
this.Items = ...;
//this.SelectedItem = ...;
// select in separate message so that the ItemsSource has definitely been set
this.Dispatcher.BeginInvoke(delegate
{
this.SelectedItem = ...;
});
}
答案 1 :(得分:0)
在我从VM设置SelectedItem之前,确保ItemsSource初始化的优雅方法似乎是在视图资源中声明了ItemsSource的绑定源(无论它是什么)。 我确信有人可以把我引向光明,因为我已经指出了这一点。
我尝试过使用CollectionViewSource,但没有找到使用其Filter功能而不破坏MVVM模式的方法。另外我不知道如何重新提升过滤器,就像我以前使用ICollectionView.Filter一样(过滤掉的项目取决于另一个组合框选择,没有什么真正的幻想imo)。
也许在视图中声明并用作ItemsSource的资源不一定是CVS,我在这里寻找建议。
- Edit-- 我发现遍布网络的IsSynchronizedWithCurrentItem =“True”解决方案实际上正在运行。我误导了,因为它在第一次尝试时没有解决我的问题,因为剩下的SelectedValuePath在我的控件上不再使用了。