gpt4 book ai didi

c# - WPF 双向绑定(bind) XML

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

我正在努力掌握 WPF,更具体地说,是执行 xml 文件的两种方式绑定(bind)。我应该使用 XMLDataProvider 还是他们的另一个(更好的)选择?数据显示正常,但当我更改条目时,更改不会反射(reflect)在 xml 文件中。

XML:

    <?xml version="1.0" encoding="utf-8" ?>
<Licence>
<Market>
<Name>DAX</Name>
<Begin>01/01/2010</Begin>
<End>01/04/2010</End>
</Market>
<Market>
<Name>DJI</Name>
<Begin>01/07/2010</Begin>
<End>01/10/2010</End>
</Market>
</Licence>

XAML:

<Window x:Class="WpfApplication5.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<DataTemplate x:Key="LicenceTemplate">
<Label Content="{Binding XPath=Name}"/>
</DataTemplate>
</Window.Resources>
<Grid>
<Grid.DataContext>
<XmlDataProvider x:Name="XMLData" Source="XMLFile1.xml" XPath="Licence/Market"/>

</Grid.DataContext>
<StackPanel>
<DataGrid x:Name="DataGridLic" ItemsSource="{Binding}" AutoGenerateColumns="False" Height="200" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="300" CellEditEnding="DataGridLic_CellEditEnding">
<DataGrid.Columns>
<DataGridTextColumn x:Name="nameColumn" Binding="{Binding XPath=Name, Mode=TwoWay}" Header="Name" Width="100" Foreground="#FFC28383" />
<DataGridTextColumn x:Name="BegColumn" Binding="{Binding XPath=Begin, Mode=TwoWay}" Header="Begin" Width="100" Foreground="#FFC14040" />
<DataGridTextColumn x:Name="EndColumn" Binding="{Binding XPath=End, Mode=TwoWay}" Header="End" Width="100" Foreground="#FFC14040" />
</DataGrid.Columns>
</DataGrid>


</StackPanel>
</Grid>

代码隐藏:

 public MainWindow()
{
InitializeComponent();
}

private void DataGridLic_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
XMLData.Document.Save("XMLFile1.xml");
}

更新:一些有用的 xml 数据绑定(bind)资源:

http://msdn.microsoft.com/en-us/library/bb669141.aspx

http://msdn.microsoft.com/en-us/library/cc165615.aspx

最佳答案

使用 XMLDataProvider 没问题。您只需要确保您正在读取和写入同一个 XML 文件。

只需按如下方式更新您的代码;

public MainWindow()
{
InitializeComponent();
var xmlFilePath = @"c:\whatever\XMLFile1.xml";
XMLData.Source = new Uri(xmlFilePath);
}

private void DataGridLic_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
var xmlSource = XMLData.Source.LocalPath;
XMLData.Document.Save(xmlSource);
}

关于c# - WPF 双向绑定(bind) XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3294255/

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