2017-11-20 40 views
1

DataGridの選択した行から値を取得するときにエラーが発生しました' .Xml.Linq.XElement 'を入力して' System.Data.DataRowView 'と入力します。 DataGridの日付はXMLファイルからの読み込みです。 C#の:タイプ '' System.Xml.Linq.XElement 'のオブジェクトを型' System.Data.DataRowView 'にキャストすることができません

foreach (DataRowView row in dataGrid.SelectedItems) 
{ 
    string text = row.Row.ItemArray[0].ToString(); 
    MessageBox.Show(text); 
} 

XAML:あなたはIEnumerable<XElement>ItemsSourceプロパティをバインドしている場合は

<DataGrid Name="dataGrid" ItemsSource="{Binding Path=Elements[person]}" AutoGenerateColumns="False" HorizontalAlignment="Left" Height="331" Margin="10,10,0,0" VerticalAlignment="Top" Width="1130" FontSize="14" FontFamily="SimSun"> 
         <DataGrid.Columns> 
          <DataGridTextColumn Header="Name" Binding="{Binding Path=Element[name].Value}" /> 
          <DataGridTextColumn Header="Date" Binding="{Binding Path=Element[date].Value}" /> 


         </DataGrid.Columns> 
        </DataGrid> 
+0

は別の可能性はありますか? – David12

答えて

1

、あなたはSelectedItemsコレクションから任意のDataRowViewオブジェクトを取得することはありません。これらはXElementsで、それ以外は何もありません。 XElementの値を取得する方法

は、XMLデータが構造化されて方法によって異なりますが、次のサンプルコードは、あなたのアイデアを与える必要があります。

foreach (var row in dataGrid.SelectedItems.OfType<XElement>()) 
{ 
    XElement nameElement = row.Element("name"); 
    if(nameElement != null) 
    { 
     string name = nameElement.Value; 
    } 
} 
+0

助けてくれてありがとう。 – David12

関連する問題