乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 136|回复: 9

使用XML linq绑定数据

[复制链接]

15

主题

44

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
104
发表于 2015-8-31 16:42:49 | 显示全部楼层 |阅读模式
我花了几个小时寻找如何做到这一点,不幸的是,作为一个VB.NET新手,我不知道如何做到这一点。我试图获取存储在XML中的数据,并将其绑定到DataGridTextColumn。任何人有一些例子,我可以得到我的牙齿或一些建议,就如何做到这一点?

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2015-8-31 17:28:52 | 显示全部楼层
没有简单的方法可以做到这一点,xml可以有一个非常扁平的结构或非常嵌套,而datagrid基本上是一个扁平的数据表。
因此,根据结构,如果它非常扁平,您可以使用类似xpath的东西来查询一些节点并构建一个数据集对象并将其绑定到datagrid。另一种方法是使用xpath并手动加载网格,听起来像工作,但您只需编写一次,但它会为特定的xml模式编写硬代码。
说到模式,您可以使用xsd.exe为xml对象编写类,这可以使您将对象绑定到属性网格,也许还有数据网格。这样您就可以像. net中的任何其他类一样查询xml对象。您需要先创建模式,但xsd.exe也可以为您这样做。
F#有TypeProviders,它做的事情与xsd.exe几乎相同,但在飞行中,非常酷的东西!我想你可以通过一点学习来使用vb.net的这些。
你有更具体的例子来说明你需要做什么吗?
回复

使用道具 举报

15

主题

44

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
104
发表于 2015-8-31 17:37:55 | 显示全部楼层
好像我不久前做过这个,而且我使用了<br>XMLDataProvider<br>https://msdn.microsoft.com/en-us/library/system.windows.data.xmldataprovider(v=vs.110)。aspx
我看看能不能把它挖出来
回复

使用道具 举报

24

主题

204

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2015-8-31 20:25:36 | 显示全部楼层
我正在构建这个应用程序,以便它根据选定的项目(为我的办公室)设置一些选项路径。我想用存储在xml文件中的一些信息填充我的DataGridTextCol列(或任何其他相关的UI元素)。此文件包含杂项值,如项目编号、管理器、单位等...我已经编写了从xml写入和读取的部分(使用一些LINQ查询)。
我是数据绑定和xaml的新手...希望在这里获得有关如何完成此任务的更多指导...
仍在阅读LINQ到XML类中的动态属性...
也许我要走得很远?您通常如何存储信息以供持久使用?在. txt文件中?
回复

使用道具 举报

16

主题

506

帖子

6

银币

中流砥柱

Rank: 25

铜币
570
发表于 2015-9-1 07:53:40 | 显示全部楼层
或者您可以使用序列化,如果你构建了一个[可序列化的]类,那么就这么简单。    var MySerialClass = new MySerialClass();。
var streamReader = new streamReader(" c \ \ my directory \ \ my file . XML ");。
var textReader = new XmlTextReader(streamReader);。
var serializer = new XML serializer(my serialclass,GetType());。

if(序列化程序,cande serialize(textReader))。
{。
var obj =序列化程序,反序列化(textReader);。
var type = myserialclass,GetType();。
var props = type,get properties();。
foreach(道具中的变量道具)。
{。
道具,SetValue(myserialclass,prop。GetValue(obj,null),null);。
}。
}。

文本阅读器,close();。
流阅读器,close();。
回复

使用道具 举报

15

主题

44

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
104
发表于 2015-9-1 10:37:08 | 显示全部楼层

取决于规模和用途。我经常使用XML进行“交错”存储。数据库或CSV文件)会使生活变得困难。很多事情都归结于存储什么以及如何使用,这将决定存储方法的类型和组织。
回复

使用道具 举报

24

主题

204

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2015-9-1 11:01:04 | 显示全部楼层

如果信息丢失重置为默认值,这是世界末日吗?
回复

使用道具 举报

12

主题

64

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
112
发表于 2015-9-1 15:20:44 | 显示全部楼层
我使用下面链接中的类将设置读/写到xml、注册表或ini文件。它被很好地组合在一起,对于它试图做的事情非常有用
它不是通用的xml、注册表、ini文件读取器/写入器。其唯一目的是将设置读/写到xml、注册表或ini。
http://www.codeproject.com/Articles/5304/Read-Write-XML-files-Config-files-INI-files-or-the
回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2015-9-1 22:18:47 | 显示全部楼层
我不知道序列化/反序列化...似乎这正是我正在寻找的...现在,我必须找到如何将我的属性数据绑定到我的xaml代码...(永不停止...)找到以下二进制序列化(在SoapSerializer上 -->不能编辑文件和较小的文件大小)(定义类时,您必须指定
...);
我附上了一个小项目示例,在下面显示了两种序列化类型的操作...VB.NET 当然...
  1. Imports System.Runtime.Serialization
  2. Imports System.Runtime.Serialization.Formatters.Binary
  3. Imports System.IO
  4. Public Class BinarySerializer
  5.     Shared Sub SerializeToFile(ByVal FileInfo As FileInfo, ByVal [Object] As Object)
  6.         Dim locFs As FileStream = New FileStream(FileInfo.FullName, FileMode.Create)
  7.         Dim locBinaryFormatter As New BinaryFormatter(Nothing, New StreamingContext(StreamingContextStates.File))
  8.         locBinaryFormatter.Serialize(locFs, [Object])
  9.         locFs.Flush()
  10.         locFs.Close()
  11.     End Sub
  12.     Shared Function DeserializeFromFile(ByVal FileInfo As FileInfo) As Object
  13.         Dim locObject As Object
  14.         Dim locFs As FileStream = New FileStream(FileInfo.FullName, FileMode.Open)
  15.         Dim locBinaryFormatter As New BinaryFormatter(Nothing, New StreamingContext(StreamingContextStates.File))
  16.         locObject = locBinaryFormatter.Deserialize(locFs)
  17.         locFs.Close()
  18.         Return locObject
  19.     End Function
  20. End Class

回复

使用道具 举报

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2015-9-2 07:43:25 | 显示全部楼层

绑定是很容易的部分。您的[Serializable]类将有一个可观察集合
来表示表格数据。将DataGrid的ItemsSource绑定到该集合,DataGridTextCol列将绑定到类MyTablarData的各个属性。确保MyTablularData继承INotifyProperty tyChanged并在每个属性中放置更改通知。DataGrid将处理其余部分。
现在如果您真的想以正确的方式执行此操作。然后我会将我的模型MyTablarData包装在一个视图模型中,让视图模型处理属性更改,并将视图模型绑定到DataGrid。两种方式都可以工作,这取决于您要编写多少代码。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-5 00:38 , Processed in 0.191897 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表