2011-04-26 4 views
0

내가WPF 데이터 그리드 받기 행 항목

 <DataGrid Grid.Row="0" x:Name="dg1" Grid.Column="0" SelectionChanged="DataGrid_SelectionChanged" ItemsSource="{Binding Path=Articles}" AutoGenerateColumns="False"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Header="Description" Binding="{Binding Path=Description}" /> 
      </DataGrid.Columns> 
     </DataGrid> 

의 ViewModel 내가 코드 반환 다음, 선택한 항목을 얻을 수 아니다 재산을

public IEnumerable<Article> Articles 
{ 
    get 
    { 
     return _ArticleList; 
    } 
} 

을 가지고, 다음과 같이 내가 데이터 그리드를, WPF 새로운 오전 오류. 'MS.Internal.NamedObject'형식의 개체를 'Article'형식으로 캐스팅 할 수 없습니다.

private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    Article Article = (Article)this.dg1.SelectedItems; 
} 

동일한 방법을 구현하는 방법을 알려주십시오.

답변

1

편집 :

DataGrid.SelectedItems가 IList의입니다. 당신은 단지 선택된 하나 사용 DataGrid.SelectedItem <를 원하는 경우 -의 :없이

당신이 바인딩을 통해의 selectedItem을 설정하려면 :

public Article SelectedArticle 
{ 
    set 
    { 
     this._selectedArticle= value; 
     OnPropertyChanged("SelectedArticle"); 
    } 
    get 
    { 
     return _selectedArticle; 
    } 
} 

XAML

<DataGrid SelectedItem="{Binding SelectedArticle, Mode=OneWayToSource}" /> 

또는 CommandParameter 등을 아이콘이있는 버튼

<Button Command="{Binding EditDataCommand}" CommandParameter="{Binding ElementName=MyGridCtrl, Path=MyDataGrid.SelectedItem}"/> 

또는 모두 선택한 SelectedItems for Butt 이 작품 ICommand의

<Button Command="{Binding DeleteDataCommand}" CommandParameter="{Binding ElementName=MyGridCtrl, Path=MyDataGrid.SelectedItems}" > 
+0

'MyGridCtl'이 무엇인지 지정하지 않았습니다. – Philip

1

당신은 항목이 선택되어 있는지 확인해야합니다

private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    if(this.dg1.SelectedItems.Count > 0){ 
     Article article = (Article)this.dg1.SelectedItems; 
    } 
} 
+0

오류 코드에 내가 –

+0

@Milan 아 디트 __article 내가 대답을 편집 한 사용 때문에 변수, 자사의 타이핑 실수가 아닙니다. 시도해 봐. – Vale

0

희망 ...에

제 _Article = ((dgReferences.SelectedItem 제 등 ​​ DataGridRow) .Item 등);

감사 ArunDhaJ