XML の XPath にバインドされるデータバインドされた UI コントロールにコード ビハインド内の XML 文字列を読み込む方法は?

StackOverflow https://stackoverflow.com/questions/60259

質問

私が見たすべてのサンプルでは、​​xmldataprovider ソースで静的 XML が使用されており、XPath バインディングを使用して UI コントロールをデータバインドするために使用されます。WPF UI を使用して、動的 XML (コーディング中に開発者に知られている構造) を編集することが考えられます。

動的 XML 文字列をロードして (たとえば、実行時にファイルからロードして)、その XML 文字列を XmlDataprovider ソースとして使用する方法を見つけた人はいますか?

コードスニペットは素晴らしいでしょう。

アップデート:より明確にするために、Webサービスコールから受け取ったXML文字列をロードしたいとします。XMLの構造は分かりました。そこで、WPF ウィンドウ上の WPF UI コントロールにデータバインドします。これを機能させるにはどうすればよいでしょうか?Web 上のすべてのサンプルは、XmlDataProvider ノードの XAML コード内で XML 全体を定義します。これは私が探しているものではありません。コードビハインドで XML 文字列を使用して、UI コントロールにデータバインドしたいと考えています。

役に立ちましたか?

解決

XML ファイルをディスクからロードし、TreeView にバインドするために使用したコードを次に示します。簡潔にするために、通常のテストの一部を削除しました。例の XML は OPML ファイルです。

XmlDataProvider provider = new XmlDataProvider();

if (provider != null)
{
  System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
  doc.Load(fileName);
  provider.Document = doc;
  provider.XPath = "/opml/body/outline";
  FeedListTreeView.DataContext = provider;
}

他のヒント

Web サービスを使用して XML を取得し、そこから XML ドキュメントを作成します。その後、xmlDataProvider のソースをサービスから取得した XMLDocument に設定できます。

私は Visual Studio を備えた PC を使用してテストを行っていませんが、これを実行できるはずです。

手順は質問で述べたとおりです。

1. Get XML from webservice
2. Convert XML String to XML Document
3. Set the XMLDataProvider.Document value to your XML Document
4. Bind that to your controls
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top