无法转换类型' System.Xml.Linq.XElement'输入' System.Data.DataRowView'

时间:2017-11-20 16:23:04

标签: c# xml wpf

当我想从DataGrid选择行获取值时我遇到错误无法转换类型' System.Xml.Linq.XElement'' System.Xml.Linq.XElement'输入' System.Data.DataRowView'。 DataGrid中的日期是从XML文件加载的。 C#:

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

XAML:

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

1 个答案:

答案 0 :(得分:1)

如果您已将ItemsSource属性绑定到IEnumerable<XElement>,则您无法从DataRowView集合中获取任何SelectedItems个对象。这些是XElements而没有别的。

如何获取XElement的值取决于XML数据的结构,但以下示例代码应该为您提供了这个想法:

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