2011-04-26 95 views
0

我新的WPF,我有數據網格如下,WPF DataGrid中獲取行項目

 <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> 

視圖模型具有財產

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

我沒能獲得所選擇的項目,下面的代碼返回錯誤。 無法投射「MS.Internal.NamedObject」類型的對象來鍵入「文章」。

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用於按鈕與ICommand

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

或所有SelectedItems對於對接與ICommand的

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

你不指定'MyGridCtl'是什麼。 – Philip 2013-02-20 22:07:40

1

你需要的,如果選擇檢查項目:

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

錯誤不是因爲變量,它的打字錯誤,在代碼中我使用__article – 2011-04-26 09:07:54

+0

@Milan阿迪亞我已經編輯了答案。試試看。 – Vale 2011-04-26 09:11:58

0

希望這個作品......

文章_Article = ((dgReferences.SelectedItem爲 DataGridRow).Item的條款);

問候 ArunDhaJ