将SelectedItem绑定为ItemsSource的绑定未完成

时间:2010-12-12 20:13:45

标签: wpf mvvm

我遇到了一个问题我很惊讶我找不到任何讨论(除了WPF MVVM ComboBox SelectedItem or SelectedValue not working之外)。

我有一个MVVM表单有2个ctors,一个用于“新项目创建”,另一个用于“项目修改”。我有一个代表项目属性之一的组合框。

在修改ctor中,初始化绑定到ItemsSource的属性,然后设置绑定到SelectedItem的属性。但是在UI中没有选择任何内容,除非我延迟(甚至一点点)SelectedItem集。

我该如何解决这个问题?我不能保持一个完全随机的间隔计时器来解决问题:D

感谢您的帮助

2 个答案:

答案 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在我的控件上不再使用了。

相关问题