2017-10-20 140 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