gpt4 book ai didi

C#:WPF 数据网格和 xml 文件

转载 作者:数据小太阳 更新时间:2023-10-29 02:27:51 24 4
gpt4 key购买 nike

如何使用类读取 xml 文件并将其填充到数据网格中?数据网格应该具有验证功能?

XML文件:

<?xml version='1.0'?>
<Data>
<Book>
<Author>John Doe</Author>
<Title>Straight Track Demo</Title>
<Version>1</Version>
</Book>
</Data>

最佳答案

有几种方法可以加载带有 XML 的 DataGrid(还有其他方法):

  1. 使用XmlDataProvider
  2. 从代码隐藏中读取 XML

这是一个使用这两种方法的非常粗糙的示例。

XAML

<Window x:Class="WpfApplication1.MyDataGrid"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MyDataGrid" Height="300" Width="300">
<Window.Resources>

<XmlDataProvider x:Key="BookData"
Source="C:\Somewhere\Books.xml" XPath="Data"/>

</Window.Resources>
<StackPanel>
<DataGrid
ItemsSource="{Binding Path=Elements[Book]}"
AutoGenerateColumns="False" Height="Auto"
Name="dataGrid1"
VerticalAlignment="Top" HorizontalAlignment="Stretch">

<DataGrid.Columns>
<DataGridTextColumn
Header="Author"
Binding="{Binding Path=Element[Author].Value}"/>
<DataGridTextColumn
Header="Title"
Binding="{Binding Path=Element[Title].Value}"/>
<DataGridTextColumn
Header="Version"
Binding="{Binding Path=Element[Version].Value}" />
</DataGrid.Columns>

</DataGrid>


<DataGrid
DataContext="{StaticResource BookData}"
ItemsSource="{Binding XPath=Book}"
AutoGenerateColumns="False" Height="Auto"
Name="dataGrid2" Margin="0,25,0,0"
VerticalAlignment="Top" HorizontalAlignment="Stretch">

<DataGrid.Columns>
<DataGridTextColumn
Header="Author"
Binding="{Binding XPath=Author}"/>
<DataGridTextColumn
Header="Title"
Binding="{Binding XPath=Title}"/>
<DataGridTextColumn
Header="Version"
Binding="{Binding XPath=Version}" />
</DataGrid.Columns>

</DataGrid>

</StackPanel>
</Window>

代码隐藏

using System.Windows;
using System.Xml.Linq;

namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MyDataGrid.xaml
/// </summary>
public partial class MyDataGrid : Window
{
public MyDataGrid()
{
InitializeComponent();

var xml = XDocument.Load( "c:\\Somewhere\\Books.xml" ).Root;
dataGrid1.DataContext = xml;
}

}
}

供引用

最后,这里有几篇文章:

  1. Binding.XPath Property on MSDN
  2. Customize Data Display with Data Binding and WPF > Using XML Data
  3. A DataGrid sample using XML data

关于C#:WPF 数据网格和 xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5238534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com