【问题标题】:ComboBox and Entity Framework, How do I get the ID? (WPF-MVVM)ComboBox 和实体框架,如何获取 ID? (WPF-MVVM)
【发布时间】:2012-12-15 00:10:06
【问题描述】:

如何在 ViewModel.AddNewMovie() 中获取所选语言的 ID? 这是我的第一次尝试。这很糟糕,因为它是索引,而不是 ID。

查看:

...
<ComboBox ItemsSource="{Binding LanguagesCollection}" 
SelectedIndex="{Binding NewMovieLanguage}"
DisplayMemberPath="L_Name" SelectedValuePath="L_Id"/>
...

视图模型:

...

public ObservableCollection<Languages> LanguagesCollection { get; private set; }
public ObservableCollection<Movies> MoviesCollection{ get; private set; }

...

_Entities = new MyAppEntities();
LanguagesCollection = new ObservableCollection<Languages>(_Entities.Languages);
MoviesCollection = new ObservableCollection<Movies>(_Entities.Movies.Include("Languages"));

...

private void AddNewMovie()
{
        OnPropertyChanged("NewMovieTitle");
        OnPropertyChanged("NewMovieLanguage");
    try
    {
        Movies NewMovie = new Movies 
        {
            M_Title = NewMovieTitle,
            M_Language_Id = Convert.ToInt32(NewMovieLanguage)+1,
        };

        _Entities.AddToMovies(NewMovie);
        MoviesCollection.Add(NewMovie);
        ...
    }
    catch
    {
        ...
    }
}

实体数据模型:

电影(表格)

M_Id Int32

M_Title 字符串

M_Language_Id Int32 fk

语言(表格)

L_Id Int32

L_Name 字符串

-- 数据--

语言

1 英语

2 德语

3 法语

4 西班牙语

【问题讨论】:

    标签: wpf mvvm binding combobox entity


    【解决方案1】:

    哦,解决办法是:

    <ComboBox ItemsSource="{Binding LanguagesCollection}" 
    SelectedValue="{Binding NewMovieLanguage}"
    DisplayMemberPath="L_Name" SelectedValuePath="L_Id"/>
    

    【讨论】:

      【解决方案2】:

      请更改为:

      <ComboBox ItemsSource="{Binding LanguagesCollection}" 
      SelectedItem="{Binding NewMovieLanguage}"
      DisplayMemberPath="L_Name" SelectedValuePath="L_Id"/>
      

      【讨论】:

        猜你喜欢
        • 2012-09-02
        • 1970-01-01
        • 1970-01-01
        • 2013-06-20
        • 2013-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多