Добавление кнопок через код с помощью XamlReader.Parse Вызывает исключение - PullRequest
0 голосов
/ 04 июня 2018

Я пишу программу, которая читает в группе файлов.Внутри этих файлов есть строка XAML для добавления кнопки.Я ничего не знаю о настройке кнопки, кроме как правильно сформированный XAML.

Когда я использую XamlRead.Parse, он выдает исключение ": Исключение: 'System.Windows.Markup.XamlParseException' в PresentationFramework.dll Дополнительная информация:" Невозможно создать неизвестный тип "Кнопка". "Номер строки '1' и позиция строки '2'.

Для тестирования мой входной файл выглядит так:

<Button Width="250" Height="50" Content="Button From Test File" Background="Yellow"/>

А мой код выглядит так:

... 
    int start = filedata.IndexOf("<Button");
    if (start >=0)
    {
        string btnData = filedata.Substring(start, filedata.IndexOf("/>") - start + 2);                    

        Button cmdButton = CreateButton(btnData);
    }
...

private Button CreateButton(string ButtonXML)
{
     Button newButn = new Button();

     newButn = (Button)System.Windows.Markup.XamlReader.Parse(ButtonXML);

     return NewButn;
}

Когда я вставляю Button XAML в файл проекта mainwindow.xaml, он показывает кнопку отлично.

Почему это дает мне исключение?

1 Ответ

0 голосов
/ 06 июня 2018

Хак смог указать мне правильное направление.Я хотел сохранить код во входных файлах чистым, поэтому я решил немного изменить строку, когда она была передана. Функция создания кнопки теперь выглядит так:

private Button CreateButton(string ButtonXML)
{
    Button newButn = new Button();
    ButtonXML = ButtonXML.Replace("<Button", @"<Button xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' ");

    newButn = (Button)System.Windows.Markup.XamlReader.Parse(ButtonXML);

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