使用 XamlReader.Parse 通过代码隐藏添加按钮会导致异常



我正在编写一个读取一组文件的程序。这些文件内部是一行用于添加按钮的 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;
}

当我将按钮 XAML 放入我的主窗口.xaml 项目文件时,它显示按钮正常。

为什么它给我例外?

Hack能够为我指出正确的方向。我想保持输入文件中的代码干净,所以我决定在传入字符串时对字符串进行一些修改。创建按钮函数现在如下所示:

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;
}

最新更新