当我想从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>
答案 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;
}
}