博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实现xml和xaml数据双向绑定的问题
阅读量:5252 次
发布时间:2019-06-14

本文共 2105 字,大约阅读时间需要 7 分钟。

我有一个xml文件 其中定义了

233

我在xaml中进行了数据绑定 如下

<Slider Maximum="255" Minimum="0" Value="{Binding Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, XPath=/colors/colora}" x:Name="ColorSliderA"/>
绑定是双向的并且也定义了在属性更改时更新数据源 但是 我移动slider时,数据源的值并不会变 请问要如何做才能让xml中的数据源值改变

-->你得data是在xml里的 我的需要他在一个xml文件中 上面是文件 按你上面的改成这样xml文件还是不会在silder改变的时候 文件自动更新喔!

对XML文件的binding我们要注意一点,就是在运行时,我们对XML数据的任何更改都是在内存中进行的,也就是说这个是临时的,这个更改结果是临时反映在内存中的,如果我们不手动保存到本地硬盘的话,程序一退出,所有的改动都不会自动保存(即使你设置了TwoWay binding).
在这个例子中,我们可以像下面这样保存结果(所有的改动都完成后):
XmlDataProvider xml = this.Resources["xmlData"] as XmlDataProvider;
xml.Document.Save("D:/temp.xml");
如果你原先的XML文件路径是D:/temp.xml,在保存的时候,你可以设成一样,这样新文件就会更换原来的文件了.
-->另外我还想问 如果我上面的文件color那行有多个 是否可以条件绑定到一条上
你可以使用multi value converter,对多个数据进行处理后,再返回一个合适的值。
这是一个关于IMultiValueConverter的MSDN的文档

 

我想在程序运行时实时显示硬盘上的xml的内容,例如用textblock 显示传感器采集得到的xml数据

我将xml作为xmldataprovider,将textblock.text 和xml内的数据进行了绑定

现在遇到的问题是程序在运行开始时读取了xml内的数据,运行时xml数据改变了,但程序内的显示未发生改变。

我看到在回答问题 “实现xml和xaml数据双向绑定的问题”时 版主提到了

“在运行时,我们对XML数据的任何更改都是在内存中进行的,也就是说这个是临时的,这个更改结果是临时反映在内存中的,如果我们不手动保存到本地硬盘的话,程序一退出,所有的改动都不会自动保存(即使你设置了TwoWay binding).”

我遇到的情况也是这个原因吗? 应该怎么解决呢?

关键:

public MainWindow()        {            InitializeComponent();            XmlDataProvider xml = FindResource("xmlFromFile") as XmlDataProvider;            System.Xml.XmlDocument xmldoc = new System.Xml.XmlDocument();            xmldoc.Load("People.xml");            xml.Source = new Uri(AppDomain.CurrentDomain.BaseDirectory + @"/People.xml", UriKind.RelativeOrAbsolute);            FileSystemWatcher watcher = new FileSystemWatcher();            watcher.Path = AppDomain.CurrentDomain.BaseDirectory;            watcher.Changed += new FileSystemEventHandler(watcher_Changed);                 watcher.EnableRaisingEvents = true;        }        void watcher_Changed(object sender, FileSystemEventArgs e)        {            Thread.Sleep(100);            XmlDataProvider xml = FindResource("xmlFromFile") as XmlDataProvider;            xml.Refresh();        }

参考例子下载:

转载于:https://www.cnblogs.com/wangchunming/archive/2012/08/14/2638091.html

你可能感兴趣的文章
codeforces 798D Mike and distribution
查看>>
条件、循环、函数定义 练习
查看>>
NIO、AIO学习历程
查看>>
2011.11.5 一道微软面试题
查看>>
poj 2182 树状数组
查看>>
细说KVO
查看>>
BZOJ2824: [AHOI2012]铁盘整理
查看>>
IE浏览器已经卸载,但是桌面上的图标却无法删除的解决方案
查看>>
JAVA记录-String/StringBuilder/StringBuffer区别
查看>>
面向对象设计模式纵横谈:Adapter 适配器模式(笔记记录)
查看>>
Java JSON技术框架选型与实例(转)
查看>>
查看修改mysql编码方式
查看>>
PAT 乙级 (将剩下的做了)
查看>>
分布式缓存技术redis学习系列(二)——详细讲解redis数据结构(内存模型)以及常用命令...
查看>>
如何用Android Studio查看build.gradle源码
查看>>
中国企业流程管理的建设方法--工作流程管理方案
查看>>
Tomcat详细用法学习(四)
查看>>
乐港游戏校招面试总结
查看>>
SQL用replace替换文本部分内容
查看>>
C++,快速排序【写出来的】
查看>>