C# WPF组合框MVVM数据绑定问题

C# WPF组合框MVVM数据绑定问题,c#,wpf,data-binding,mvvm,C#,Wpf,Data Binding,Mvvm,我有以下类(我将保持简单。请假设我已实现INotifyPropertyChanged): 或者有没有更好的替代方案来实现这一点而不使用Linq语法?这是正确的方法吗?NewMovie.MovieLanguage对象是否必须来自LanguageList集合,以便组合框显示为SelectedItem?绑定是否执行一些哈希检查,还是尝试匹配LanguageID值?Combobox使用object.Equals在SelectedItem属性更新时显示ItemsSource中的项目,因此您有几种方法来实现

我有以下类(我将保持简单。请假设我已实现INotifyPropertyChanged):

或者有没有更好的替代方案来实现这一点而不使用Linq语法?这是正确的方法吗?NewMovie.MovieLanguage对象是否必须来自LanguageList集合,以便组合框显示为SelectedItem?绑定是否执行一些哈希检查,还是尝试匹配LanguageID值?

Combobox使用object.Equals在SelectedItem属性更新时显示ItemsSource中的项目,因此您有几种方法来实现所需的行为:

  • 使用集合中的引用。事实上,这是你和Linq的例子
  • 重写语言类中的等于方法
  • 使用SelectedIndex属性
  • AddMovieViewModel 
    { 
       public Movie NewMovie {get;set;}
    
       public ObservableCollection<Language> LanguageList {get;set;}
    }
    
    Movie
    {
       public Language MovieLanguage {get;set;}
    }
    
    Langauge
    {
       public int LanguageID {get;set;}
       public string LanguageName {get;set;}
    }
    
    <ComboBox ItemsSource="{Binding LanguageList}" Style="{x:Null}"
                          DisplayMemberPath="LanguageName" 
                          SelectedValuePath="LanguageID" 
                          SelectedItem="{Binding NewMovie.MovieLanguage, Mode=TwoWay}"
                          SelectedValue="{Binding NewMovie.MovieLanguage.LanguageID, Mode=TwoWay}" />
    
    NewMovie.MovieLanguage = LanguageList.First(lang => lang.LanguageID == 2);