使用XML linq绑定数据
我花了几个小时寻找如何做到这一点,不幸的是,作为一个VB.NET新手,我不知道如何做到这一点。我试图获取存储在XML中的数据,并将其绑定到DataGridTextColumn。任何人有一些例子,我可以得到我的牙齿或一些建议,就如何做到这一点?**** Hidden Message ***** 没有简单的方法可以做到这一点,xml可以有一个非常扁平的结构或非常嵌套,而datagrid基本上是一个扁平的数据表。
因此,根据结构,如果它非常扁平,您可以使用类似xpath的东西来查询一些节点并构建一个数据集对象并将其绑定到datagrid。另一种方法是使用xpath并手动加载网格,听起来像工作,但您只需编写一次,但它会为特定的xml模式编写硬代码。
说到模式,您可以使用xsd.exe为xml对象编写类,这可以使您将对象绑定到属性网格,也许还有数据网格。这样您就可以像. net中的任何其他类一样查询xml对象。您需要先创建模式,但xsd.exe也可以为您这样做。
F#有TypeProviders,它做的事情与xsd.exe几乎相同,但在飞行中,非常酷的东西!我想你可以通过一点学习来使用vb.net的这些。
你有更具体的例子来说明你需要做什么吗? 好像我不久前做过这个,而且我使用了<br>XMLDataProvider<br>https://msdn.microsoft.com/en-us/library/system.windows.data.xmldataprovider(v=vs.110)。aspx
我看看能不能把它挖出来 我正在构建这个应用程序,以便它根据选定的项目(为我的办公室)设置一些选项路径。我想用存储在xml文件中的一些信息填充我的DataGridTextCol列(或任何其他相关的UI元素)。此文件包含杂项值,如项目编号、管理器、单位等...我已经编写了从xml写入和读取的部分(使用一些LINQ查询)。
我是数据绑定和xaml的新手...希望在这里获得有关如何完成此任务的更多指导...
仍在阅读LINQ到XML类中的动态属性...
也许我要走得很远?您通常如何存储信息以供持久使用?在. txt文件中? 或者您可以使用序列化,如果你构建了一个[可序列化的]类,那么就这么简单。 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();。
取决于规模和用途。我经常使用XML进行“交错”存储。数据库或CSV文件)会使生活变得困难。很多事情都归结于存储什么以及如何使用,这将决定存储方法的类型和组织。
如果信息丢失重置为默认值,这是世界末日吗?
我使用下面链接中的类将设置读/写到xml、注册表或ini文件。它被很好地组合在一起,对于它试图做的事情非常有用
它不是通用的xml、注册表、ini文件读取器/写入器。其唯一目的是将设置读/写到xml、注册表或ini。
http://www.codeproject.com/Articles/5304/Read-Write-XML-files-Config-files-INI-files-or-the 我不知道序列化/反序列化...似乎这正是我正在寻找的...现在,我必须找到如何将我的属性数据绑定到我的xaml代码...(永不停止...)找到以下二进制序列化(在SoapSerializer上 -->不能编辑文件和较小的文件大小)(定义类时,您必须指定
...);
我附上了一个小项目示例,在下面显示了两种序列化类型的操作...VB.NET 当然...
Imports System.Runtime.Serialization
Imports System.Runtime.Serialization.Formatters.Binary
Imports System.IO
Public Class BinarySerializer
Shared Sub SerializeToFile(ByVal FileInfo As FileInfo, ByVal As Object)
Dim locFs As FileStream = New FileStream(FileInfo.FullName, FileMode.Create)
Dim locBinaryFormatter As New BinaryFormatter(Nothing, New StreamingContext(StreamingContextStates.File))
locBinaryFormatter.Serialize(locFs, )
locFs.Flush()
locFs.Close()
End Sub
Shared Function DeserializeFromFile(ByVal FileInfo As FileInfo) As Object
Dim locObject As Object
Dim locFs As FileStream = New FileStream(FileInfo.FullName, FileMode.Open)
Dim locBinaryFormatter As New BinaryFormatter(Nothing, New StreamingContext(StreamingContextStates.File))
locObject = locBinaryFormatter.Deserialize(locFs)
locFs.Close()
Return locObject
End Function
End Class
绑定是很容易的部分。您的类将有一个可观察集合
来表示表格数据。将DataGrid的ItemsSource绑定到该集合,DataGridTextCol列将绑定到类MyTablarData的各个属性。确保MyTablularData继承INotifyProperty tyChanged并在每个属性中放置更改通知。DataGrid将处理其余部分。
现在如果您真的想以正确的方式执行此操作。然后我会将我的模型MyTablarData包装在一个视图模型中,让视图模型处理属性更改,并将视图模型绑定到DataGrid。两种方式都可以工作,这取决于您要编写多少代码。
页:
[1]