2017-10-20 241 views
0

我有一个xaml文件,其中定义了我的wpf控件,我将其所有标签控件绑定到xml文件并从此文件填充。我使用xmldataprovider使用它的源属性如何在wpf C中使用xmldataprovider读取xml文件#

<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文件在数据提供商..有人做过这个之前.. 。输入/建议,欢迎...非常感谢

回答

1

使用Source属性没有这种可能性。 Source代表Uri,基于该Uri,使用Stream创建WebRequest获取数据。你不能控制如何创建这个流。

有一种解决方法;然而,你必须在代码中这样做。您可以手动加载XML文档并将其分配给XmlDataProviderDocument属性。

喜欢的东西:

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

LoadData.Document = doc; 
+0

非常感谢你dymanoid,......同时我只是想我会捕获异常,并继续我的无限循环......我wrting到XML文件每5秒中的另一程序......并且我在那里得到了异常......这对我来说现在...(虽然不是一个好方法)但是,现在我会尝试一下你的建议。再次感谢:) – andrew

+0

谢谢dymanoid,它工作:) :) – andrew