c# - 我可以将更改保存到通过绑定直接在 XAML 中加载的 XML 文件吗?
问题描述
我可以使用 XAML 绑定加载 XML 文件,并且没有代码。
<Window.Resources>
<XmlDataProvider x:Key="xmlfile" Source="Books.xml"/>
</Window.Resources>
<StackPanel>
<ListView ItemsSource="{Binding Source={StaticResource xmlfile}, XPath=/catalog/book, Mode=TwoWay}">
<ListView.View>
<GridView>
<GridViewColumn Header="Id" Width="70" DisplayMemberBinding="{Binding XPath=@id}"/>
<GridViewColumn Header="Author" Width="150" DisplayMemberBinding="{Binding XPath=author}"/>
<GridViewColumn Header="Title">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding XPath=title, Mode=TwoWay}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</StackPanel>
在上面我做了title
可编辑但更改标题并没有保存它,就像一个狂野的镜头。
我想知道既然代码很好地加载了 XML 文件,它是否也可以保存对文件的更改?我需要做什么来保存更改?
更新
谢谢,这可以保存但不完全保存到同一个文件。我的 books.xml 文件是项目根文件夹,带有保存按钮,它在bin\debug
文件夹中保存了一个副本。如果我将工作目录设置为项目根文件夹,它不会更新文件但也不会出现错误。
我还将 XAML 中的源设置为绝对路径,因此我知道我正在使用该文件,但在这种情况下保存会引发异常。
<Window.Resources>
<XmlDataProvider x:Key="xmlfile" Source="c:\\xml\\Books.xml"/>
</Window.Resources>
例外是The given path's format is not supported.
。
我也尝试了路径c:/xml/books.xml
,项目以任何一种方式读取文件,但保存会引发相同的异常。
那么我真的可以将它保存到同一个文件中吗?我如何指导它做到这一点?
解决方案
完成工作后,您必须手动保存更改。这取决于您的需要,但通常是在您关闭应用程序或用户单击按钮以保存工作时。
访问XmlDocument
作为绑定源的资源和用途并保存 XML 文档。
var xmlDataProvider = Resources["xmlfile"] as XmlDataProvider;
var xmlDocument = xmlDataProvider.Document;
var fileName = xmlDataProvider.Source.ToString();
xmlDocument.Save(fileName);
推荐阅读
- python - Scipy 未安装在 Pycharm 上
- python - 如何要求一个字符串,然后要求一个字符串的位置,然后删除字母并打印没有字母的单词
- javascript - Object.Create 带有原型的调用函数
- android - 不同的android权限名称前缀有什么区别?
- java - 为 IntelliJ Idea 选择必要的 JDK
- javascript - 我正在尝试为我的登录按钮控件获取功能,一旦填写了字段,就允许登录
- python - 通过绑定方法使用 tkinter 条目更新字典值
- google-kubernetes-engine - cloudsql_proxy 的 GKE 网络策略
- javascript - cypress - “运行所有”功能破坏了我的测试
- google-apps-script - Google 社区连接器字段未显示为指标