2017-10-02 7 views
1

테이블에서 데이터를 표시하는 데 문제가 있습니다. 테이블에는 하나의 필드 PositionName이 있고 Entity Framework Code First를 빌드하십시오. 내가 MVVM 패턴 요소 인 DataGrid와 함께 WPF를 사용하고 있습니다. XAML에서 바인딩 코드 : PositionViewModel는 뷰 모델이며, 윈도우DataGrid에서 DB의 데이터를 표시하지 않는 이유

public AddPositionView() 
{ 
    InitializeComponent(); 
    DataContext = new PositionViewModel(); 
} 

뒤에

<DataGrid AutoGenerateColumns="False" 
      x:Name="PositionGrid" Margin="2 2 2 2" 
      ItemsSource="{Binding Source = PositionCollection}"     
      SelectedItem="{Binding ThePosition, Mode=TwoWay}" 
      SelectionMode="Single" Height="235"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding PositionName}" 
          Header="Назва професії"/> 
    </DataGrid.Columns> 
</DataGrid> 

코드는 다음 코드했습니다

public PositionViewModel() 
{ 
    _db = new SalDBContext();       
    ThePosition = new Position(); 
    _poclog = new PositionLogic();  
    PositionCollection = new ObservableCollection<Position>(_poclog.Get()); 
} 

db이 테이블 ThePosition 작업에 대한 상황은 어디 - 모델 클래스이고 _poclog 기본적으로 양식 작업을위한 논리를 가진 클래스입니다. 논리 클래스는 데이터를 표시하기위한 다음 구현을 가지고 있습니다.

internal IEnumerable<Position> Get() 
{ 
    return _dbContext.Positions.ToList(); 
} 

코드는 예외없이 작동하지만 양식을 표시하지만 그리드는 비어 있습니다. PositionCollection 디버깅하는 동안 테이블의 모든 요소가 있습니다. 모두 호출 창에 대한 코드로 이동하면 빈 창이 표시됩니다. 다음 코드 다음에 빈 창을 표시합니다.

private void PositionShow_Button_Click(object sender, RoutedEventArgs e) 
{ 
    AddPositionView posview = new AddPositionView(); 
    posview.Show(); 
} 

내가 AddPositionView에 정지 점을 넣을 때 디버깅에 따라 모든 뷰 모델 클래스를 던져 가고 PositionColection는 DB의 모든 요소를 ​​가지고 있지만 그때는 AddPositionView 및 널 (null)이 될 posview로 돌아갑니다. 왜 그렇게됩니까? DataGrid는 빈 테이블을 표시합니다. 도움 주셔서 감사합니다.

public PositionCollection { get; private set; } 

또한 재산의 Binding (아닌 Source)에 이름 Path 설정해야합니다 : 당신이 그것에 결합 할 수 있도록하기위한

답변

1

PositionCollection공공 재산해야합니다 :

ItemsSource="{Binding Path=PositionCollection}"     
+0

와우 감사합니다. 경로가 문제였습니다.) PositionCollection은 구현시 공개되었습니다. OnPropertyChange) 감사합니다. –