将XML放在WPF内的DataGrid视图中

将XML放在WPF内的DataGrid视图中,xml,wpf,powershell,datagrid,Xml,Wpf,Powershell,Datagrid,我的WPF应用程序中有一个DataGrid,我希望它包含XML文件中的值。DataGrid如下所示: <TabItem Header="Datacopy"> <Grid> <DataGrid x:Name="GrdDatacopy" HorizontalAlignment="Left" Margin="7,7,0,0" VerticalAlignment="Top" Height="320" Width="640">

我的WPF应用程序中有一个DataGrid,我希望它包含XML文件中的值。DataGrid如下所示:

<TabItem Header="Datacopy">
    <Grid>
        <DataGrid x:Name="GrdDatacopy" HorizontalAlignment="Left" Margin="7,7,0,0" VerticalAlignment="Top" Height="320" Width="640">
            <DataGrid.Columns>
                <DataGridTextColumn DisplayMemberBinding="{Binding Path = Source}" Header="Bron:"></DataGridTextColumn>
                <DataGridTextColumn DisplayMemberBinding="{Binding Path = Destination}" Header="Doel:"></DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</TabItem>
但是当我粘贴到secion时,我的整个应用程序崩溃了,应该是绑定的问题

如何在datagrid中获取XML密钥并编辑这些密钥

我找到了一些样品,但我没法让它工作

PS1脚本

XAML代码:

希望有人能提供帮助,或者有没有其他方法可以在这种设置中轻松编辑和添加值


在这方面,Paul

您可以用以下方式显示xml数据

<Window x:Class="WpfApplication3.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:local="clr-namespace:WpfApplication3"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="MainWindow"
    Width="525"
    Height="350"
    mc:Ignorable="d">
<Window.Resources>
    <XmlDataProvider x:Key="XmlDataCopy" XPath="DataCopy">
        <x:XData>
            <DataCopy xmlns="" Dir="H:\O365-Source">
                <Row Destination="Temp" Source="C:\Temp" />
                <Row Destination="Downloads" Source="C:\Downloads" />
                <Row Destination="Muziek" Source="C:\Muziek" />
            </DataCopy>
        </x:XData>
    </XmlDataProvider>
</Window.Resources>
<Grid>
    <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Source={StaticResource XmlDataCopy}, XPath='Row'}">

        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding XPath='@Destination'}" Header="Destination" />
            <DataGridTextColumn Binding="{Binding XPath='@Source'}" Header="Source" />
        </DataGrid.Columns>
    </DataGrid>

</Grid>

注:

-XmlDataProvider可以用于不同的源,包括URI

-请注意xml代码段中的空xmlns=”“。否则很容易遇到名称空间问题

-如果XmlDataProvider的源是内存中的变量,也可以编辑文档。必须手动调用XmlDocument.Save()


希望这有点帮助,问候斯诺鲍

嗨,斯诺鲍,谢谢你的帮助。我已设法使数据可见,但无法动态地将行生成到WPF表单。我仍在寻找解决方案,但我现在知道它是如何工作的。不过看起来很酷:)
$DatacopySet = @{}
$XmlOffice365.Office365.Datacopy.Row | ForEach {
    $DatacopySet.add($_.Source))
    $DatacopySet.add($_.Destination))
}
$DatacopySet | ForEach-Object { .................... }
<Window x:Class="WpfApplication3.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:local="clr-namespace:WpfApplication3"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="MainWindow"
    Width="525"
    Height="350"
    mc:Ignorable="d">
<Window.Resources>
    <XmlDataProvider x:Key="XmlDataCopy" XPath="DataCopy">
        <x:XData>
            <DataCopy xmlns="" Dir="H:\O365-Source">
                <Row Destination="Temp" Source="C:\Temp" />
                <Row Destination="Downloads" Source="C:\Downloads" />
                <Row Destination="Muziek" Source="C:\Muziek" />
            </DataCopy>
        </x:XData>
    </XmlDataProvider>
</Window.Resources>
<Grid>
    <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Source={StaticResource XmlDataCopy}, XPath='Row'}">

        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding XPath='@Destination'}" Header="Destination" />
            <DataGridTextColumn Binding="{Binding XPath='@Source'}" Header="Source" />
        </DataGrid.Columns>
    </DataGrid>

</Grid>