1

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_タイトル文字列

M_Language_Id Int32 fk

言語(表)

L_Id Int32

L_名前文字列

- データ -

言語

1 英語

2 ドイツ語

3 フランス語

4 スペイン語

4

2 に答える 2

0

ああ、解決策は次のとおりです。

<ComboBox ItemsSource="{Binding LanguagesCollection}" 
SelectedValue="{Binding NewMovieLanguage}"
DisplayMemberPath="L_Name" SelectedValuePath="L_Id"/>
于 2012-12-30T14:24:40.603 に答える
0

次のように変更してください:

<ComboBox ItemsSource="{Binding LanguagesCollection}" 
SelectedItem="{Binding NewMovieLanguage}"
DisplayMemberPath="L_Name" SelectedValuePath="L_Id"/>
于 2012-12-30T14:28:08.767 に答える