【问题标题】:How to read an xml file using xmldataprovider in wpf C#如何在 wpf C# 中使用 xmldataprovider 读取 xml 文件
【发布时间】:2017-10-20 12:36:07
【问题描述】:

我有一个定义了我的 wpf 控件的 xaml 文件,我将其所有标签控件绑定到一个 xml 文件并从该文件填充。我正在使用 xmldataprovider 使用它的源属性

<Grid.DataContext>
<XmlDataProvider x:Name="LoadData" Source="data.xml" XPath="Loads/*" Document=/>
</Grid.DataContext>
<Label Grid.Row="1" Name="textbox1" Grid.Column="0" Grid.RowSpan="3" Grid.ColumnSpan="2" Background="Gray" BorderThickness="2" Content="{Binding XPath=teamname, Mode=OneWay}" FontSize="36">

在后面的代码中,

 string filename = "C:\\data.xml";
            LoadData.Source = new Uri(filename);

一切正常,我唯一的问题是我想以只读模式打开这个 xml,因为另一个程序正在写入它并且我得到“被另一个程序使用”的异常

xmldataprovider 是否有任何此类规定来设置源/读取数据提供程序中的 xml 文件。以前有没有人这样做过...欢迎输入/建议...非常感谢

【问题讨论】:

    标签: c# xml wpf xmldataprovider


    【解决方案1】:

    使用Source 属性没有这种可能性。 Source 表示 Uri,基于该 WebRequest 创建使用 Stream 获取数据。但是,您无法控制如何创建此流。

    有一个解决方法;但是,您必须在代码中执行此操作。您可以手动加载您的 XML 文档并将其分配给 XmlDataProviderDocument 属性。

    类似:

    XmlDocument doc = new XmlDocument();
    using (FileStream s = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
    {
        doc.Load(s);
    }
    
    LoadData.Document = doc;
    

    【讨论】:

    • 非常感谢 dymanoid,...同时我只是想我会捕获异常并继续我的无限循环...我在另一个程序中每 5 秒写入 xml 文件...并且我在那里遇到了异常......这对我来说现在有用......(虽然不是一个好方法)但是,我会在某个时候尝试你的建议。再次感谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多