Как загрузить строку xml в код элементов управления пользовательского интерфейса с привязкой к данным, которые привязываются к XPath XML?
-
09-06-2019 - |
Вопрос
В каждом примере, который я видел, используется статический XML в источнике xmldataprovider, который затем используется для привязки данных элементов управления пользовательского интерфейса с использованием привязки XPath.Идея состоит в том, чтобы редактировать динамический XML (структуру, известную разработчику во время кодирования), используя пользовательский интерфейс WPF.
Кто-нибудь нашел способ загрузить динамическую строку XML (например, загрузить ее из файла во время выполнения), а затем использовать эту строку XML в качестве источника XmlDataprovider?
Фрагменты кода было бы здорово.
Обновлять:Чтобы прояснить это, допустим, я хочу загрузить строку XML, которую я получил от вызова веб -службы.Я знаю структуру XML.Поэтому я привязываю его к элементам управления пользовательского интерфейса WPF в окне WPF.Как заставить это работать?Все примеры в Интернете определяют весь XML внутри кода XAML в узле XmlDataProvider.Это не то, что я ищу.Я хочу использовать строку XML в выделенном коде для привязки данных к элементам управления пользовательского интерфейса.
Решение
Вот код, который я использовал для загрузки 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;
}
Другие советы
используя ваш веб-сервис, получите XML и создайте из него XML-документ. Затем вы можете установить в качестве источника вашего xmlDataProvider значение XMLDocument, полученного от службы.
У меня нет компьютера с Visual Studio, чтобы протестировать его, но у вас должна быть возможность это сделать.
Действия такие, как вы упомянули в своем вопросе:
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