2017-10-20 17 views
0

wpfコントロールが定義されたxamlファイルがあります。すべてのラベルコントロールをxmlファイルにバインドしてこのファイルから読み込みます。私はwpfでxmldataproviderを使用してxmlファイルを読み取る方法C#

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

すべてが正常に動作します

<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"> 

と背後にあるコードで

、そのソースプロパティを使用してにXmlDataProviderを使用してやって、私の唯一の問題は、私はの一つとして、読み取り専用モードでは、このXMLを開くようにしたいです別のプログラムがそれに書いているのですが、「別のプログラムで使用されています」という例外があります。

xmldataproviderからソースを設定する/データプロバイダのxmlファイルを読み込むなどの方法があります。 。入力/提案は大歓迎です...多くのお礼ありがとうございます

答えて

1

Sourceプロパティを使用する可能性はありません。 Sourceは、Streamを使用してデータを取り出すことによってWebRequestが作成されることに基づいてUriを表します。このストリームの作成方法を制御することはできません。

回避策があります。しかし、コード内でそれを行う必要があります。手動でXML文書をロードして、のDocumentプロパティに割り当てることができます。

のような何か:

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

LoadData.Document = doc; 
+0

は、あなたに非常に多くのdymanoidありがとう...私はちょうど私が例外をキャッチし、私の無限ループを続ける考えその間は...私は別のXMLファイルにすべての5秒をwrtingましたプログラム...そして私はそこで例外を得ていた。これは私のために今働いていた...(良い方法ではない)しかし、私はいつかあなたの提案を今試してみるだろう。もう一度ありがとう:) – andrew

+0

ありがとうダイマノイド、それは働いた:) :) – andrew

関連する問題