我有一个动态读取XAML文件的应用程序:

StreamReader sr = new StreamReader(pathAndFileName);
this.Content = XamlReader.Load(sr.BaseStream);

在其中一个加载的XAML文件中(它们都删除了代码),这有效:

<UserControl
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:DynamicXaml123">
    <StackPanel Margin="10" HorizontalAlignment="Left">
        <TextBox Height="23" Width="100" Text="{Binding FirstName}" />
        <TextBox Height="23" Width="100" Text="{Binding LastName}" />
        <TextBox Height="23" Width="100" Text="{Binding Age}" />
        <local:FieldEmailView></local:FieldEmailView>
    </StackPanel>
</UserControl>

但是这给出了错误“标签'FieldEmailView'在XML命名空间'clr-namespace:DynamicXaml123; assembly = DynamicXaml123'&quot;中不存在。

<UserControl
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:DynamicXaml123;assembly=DynamicXaml123">
    <StackPanel Margin="10" HorizontalAlignment="Left">
        <TextBox Height="23" Width="100" Text="{Binding FirstName}" />
        <TextBox Height="23" Width="100" Text="{Binding LastName}" />
        <TextBox Height="23" Width="100" Text="{Binding Age}" />
        <local:FieldEmailView></local:FieldEmailView>
    </StackPanel>
</UserControl>

如果我遗漏了程序集引用,则会出现错误

Message=""XmlNamespace", "Assembly" oder "ClrNamespace"

在XAML中阅读时。

为什么我不能在此处包含大会参考,我需要更改/检查以使其工作?

有帮助吗?

解决方案

加载时,您需要能够解析程序集引用。换句话说,此程序集必须可供应用程序引用 - 一种方法是将DynamicXaml123部署到GAC。

其他提示

我建议你去进程监控器并查看您的应用正在寻找dynamicxaml123。检查融合日志。我猜想如果你包含命名空间,那么XamlSerializer中的行为会有所不同,而且这种改变会影响运行时为你的程序集进行调整的地方。

请注意,设置fuslogvw与实际开始记录之间可能存在一些延迟。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top