2012-08-21 3 views
1

두 개의 테이블을 포함하는 매우 간단한 데이터베이스가 있는데, 하나는 Books 및 다른 Genres를 나타냅니다. 저는 Entity Framework 모델 - 1 세대를 사용하여이를 생성했습니다. 이제는 WPF Datagrid에서 표현하려고합니다. Datagrid는 장부의 장르를 Combobox 열로 표시해야하지만 올바르게 바인딩하는 데 문제가 있습니다. WPF Datagrid ComboboxColumn 데이터 바인딩

<Window x:Class="TestApp.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:TestApp" 
    Title="MainWindow" Height="350" Width="525"> 
<Window.Resources> 
    <ObjectDataProvider IsAsynchronous="True" x:Key="BookDataProvider" ObjectType="{x:Type local:BookDataProvider}"> 
    </ObjectDataProvider> 
    <ObjectDataProvider x:Key="Books" ObjectInstance="{StaticResource BookDataProvider}" MethodName="GetAllBooks"></ObjectDataProvider> 
    <ObjectDataProvider x:Key="GenreDataProvider" ObjectType="{x:Type local:GenreDataProvider}" IsAsynchronous="True"> 
    </ObjectDataProvider> 
    <ObjectDataProvider x:Key="Genres" ObjectInstance="{StaticResource GenreDataProvider}" MethodName="GetAllGenres"></ObjectDataProvider> 
</Window.Resources> 
<Grid DataContext="{Binding Source={StaticResource Books}}"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="179*" /> 
     <ColumnDefinition Width="32*" /> 
     <ColumnDefinition Width="292*" /> 
    </Grid.ColumnDefinitions> 
    <DataGrid AutoGenerateColumns="False" Grid.ColumnSpan="3" Height="311" HorizontalAlignment="Left" Name="dataGrid1" VerticalAlignment="Top" Width="503" SelectionChanged="dataGrid1_SelectionChanged" ItemsSource="{Binding}"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="Title" Binding="{Binding Title}" /> 
      <DataGridTextColumn Header="ISBN" Binding="{Binding ISBN}"/> 
      <DataGridTextColumn Header="Author" Binding="{Binding Author_AuthorName}"/> 
      <DataGridComboBoxColumn Visibility="Visible" IsReadOnly="False" Header="Genre" SelectedItemBinding="{Binding Genre}" SelectedValuePath="Genre" DisplayMemberPath="Name" ItemsSource="{Binding Source={StaticResource Genres}}"/>     
     </DataGrid.Columns> 
    </DataGrid> 
</Grid> 

이것은 combox에서 장르의 목록을 보여줍니다,하지만 응용 프로그램을 실행할 때 나는 각 책에 대한 올바른 장르를 보여주고받을 수 없습니다.

답변

1

선택한 항목 바인딩과 선택한 값 경로를 모두 사용해야한다고 생각하지 않습니다. 나는 첫 번째와 함께 갈 것입니다. 또한 선택한 항목 변경 이벤트를 처리하지 않아야합니다. mvvm-ish가 아니며 엔티티의 INotifyPropertyChanged를 처리해야합니다.

그래도 문제가 해결되지 않으면 문제가 모델 클래스에 있어야한다고 생각합니다. 이 바인딩이 작동하려면 엔티티 객체의 genre 속성이 사용 가능한 장르 목록에서 동일한 장르 인스턴스로 설정되어야합니다. 즉, 둘은 완전히 동일한 대상이어야합니다.

관련 문제