Как добавить ресурс: XML-файл - PullRequest
3 голосов
/ 30 апреля 2011

В настоящее время я использую следующий код XAML для добавления своего xml-файла в качестве ресурса:

<XmlDataProvider x:Key="MyData"  Source="D:\myfile.xml" XPath="Books/Book" />

Теперь я хотел бы использовать этот файл myfile.xml из папки% appdata%, чтобы получить большепортативность.Очевидно, что использование Source = "% appdata% \ myfile.xml" не работает, так как кажется, что символ "%" не принят в XAML.

Таким образом, я хочу добавить этот ресурс программно в коде моего главного окна.Я пробовал:

public MainWindow()
{
    this.Resources.Add("MyData", "D:\\myfile.xml");
    InitializeComponent();
}

Но тогда у меня нет свойства XPath = "" , доступного в методе Resources.Add, поэтому приложение не работает правильно.

Есть ли способ установить это свойство?Или я делаю это неправильно?

Нет ответа от Google за это.

Большое спасибо.

1 Ответ

0 голосов
/ 30 апреля 2011

Этот фрагмент можно использовать в следующем коде:

public MainWindow()
{
    XmlDataProvider provider = new XmlDataProvider()
    provider.Source = new Uri(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\myfile.xml");
    provider.XPath = "Books/Book";
    this.Resources.Add("MyData", provider);
}

Это правильный код для добавления ресурсов, поскольку

 this.Resources.Add("MyData", "D:\\myfile.xml");

добавит в Ресурсы строку с ключом "MyData"и значение "D: \ myfile.xml"

Или вы все еще можете использовать объявление XAML, а затем в конструкторе добавить:

(this.Resources["MyData"] as XmlDataProvider).Source = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\myfile.xml";
(this.Resources["MyData"] as XmlDataProvider).XPath = "Books/Book";

Я предлагаю последнее решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...