【发布时间】:2021-04-16 03:33:19
【问题描述】:
我有一个 xml 文件。我只想加载“Project1”的内容并排序到“TaskID”。
我的 XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<Contents>
<Project Project="Project1">
<TaskV>Hello</TaskV>
<TaskE>Goodbye</TaskE>
<taskID>1</taskID>
</Project>
<Project Project="Project1">
<TaskV>Nice to meet you</TaskV>
<TaskE>Let's go</TaskE>
<taskID>2</taskID>
</Project>
<Project Project="Project2">
<TaskV>This is my book</TaskV>
<TaskE>This is my pen</TaskE>
<taskID>1</taskID>
</Project>
<Project Project="Project2">
<TaskV>Look for a cat</TaskV>
<TaskE>Near the library</TaskE>
<taskID>2</taskID>
</Project>
<Contents>
我的代码:
private void loaddata()
{
XDocument doc = XDocument.Load(System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments) + @"\result.xml");
var query = from project in doc.Descendants("Contents")
where (string)project.Element("Project") == "Project1"
select new
{
V = project.Element("TasKV").Value,
E = project.Element("TaskE").Value
};
dataGrid.ItemsSource = query;
}
我的xml:
<Window x:Class="XML.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:XML"
mc:Ignorable="d"
Title="MainWindow" Height="420" Width="1327.471">
<Grid>
<DataGrid x:Name="dataGrid" HorizontalAlignment="Left" Margin="24,64,0,0" VerticalAlignment="Top" Height="300" Width="1268" ItemsSource="{Binding}"/>
</Grid>
</Window>
我可以将 XML 文件中的所有数据加载到数据网格中,但是当我使用 linq 只获取数据“Project1”时,它不起作用。
任何人都可以帮助我解决这个问题。对不起,如果我的英语很糟糕。
【问题讨论】:
-
使用
dataGrid.DataContext = query;设置dataGrid 的数据上下文或从xaml 中移除ItemsSource="{Binding}"的覆盖。 -
我尝试像你说的那样使用 datagGrid.DataContext=query,但它不起作用。