2013-08-20 93 views
0

我有一個組合框和綁定的ItemsSource和的SelectedItem不要設置爲的SelectedItem組合框在WPF MVVM

<ComboBox DisplayMemberPath="Name" ItemsSource="{Binding OrganizationalPostCollection,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding OrganizationalPost,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left" Width="230" Margin="5" /> 

和視圖模型

OrganizationalPost _organizationalPost; 
public OrganizationalPost OrganizationalPost 
{ 
    get { return _organizationalPost; } 
    set 
    { 
     if (value != _organizationalPost) 
     { 
      _organizationalPost = value; 
      RaisePropertyChanged("OrganizationalPost"); 
     } 
    } 
} 

ICollectionView _organizationalPostCollection; 
public ICollectionView OrganizationalPostCollection 
{ 
    get { return _organizationalPostCollection; } 
    set 
    { 
     if (value != _organizationalPostCollection) 
     { 
      _organizationalPostCollection = value; 
      RaisePropertyChanged("OrganizationalPostCollection"); 
     } 
    } 
} 

和構造

OrganizationalPostCollection = CollectionViewSource.GetDefaultView(db.OrganizationalPost.ToList()); 
OrganizationalPost = SelectedUser.OrganizationalPost; 

OrganizationalPost有價值,但不要在SelectedItem中設置。

+1

哪裏'SelectedUser.OrganizationalPost'來自它是在'OrganizationalPostCollection'到'OrganizationalPost'item的引用或者是從其他地方? –

+0

它來自其他地方。 –

+0

嘗試在ICollectionView中設置對象類型(即ICollection ) – Daniel

回答

3

爲了選擇用於SelectedItem屬性的值,並有UI更新,您設置必須是從被設置爲ItemsSource對於同一控制集合的項目:

OrganizationalPost = OrganizationalPostCollection[selectedItemIndex]; 

或者,如果你的類有一個唯一識別的特性:

OrganizationalPost = OrganizationalPostCollection.Where(p => p.Id == itemToSelect.Id). 
Single();