silverlight - 在 Silverlight 资源字典后面添加代码时出错 : AG_E_PARSER_BAD_TYPE

标签 silverlight xaml silverlight-3.0

应该可以在 Silverlight 中为资源字典添加代码隐藏文件,但我不断收到相同的错误,从 InitializeComponent 抛出。我的方法App.xaml构造函数:XamlParseException :AG_E_PARSER_BAD_TYPE .

资源字典 xaml 文件如下所示:

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="Celerior.Annapurna.SL.ProvisiorResourceDictionary"
    x:ClassModifier="public">
    ...
</ResourceDictionary>

如果我删除 x:Class属性一切再次正常(当然,我仔细检查了类名并且它是正确的)。我的App.xaml文件并不令人兴奋,只是包含对资源字典的引用:

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
             x:Class="Celerior.Annapurna.SL.App">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="ProvisiorResourceDictionary.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

我做错了什么?

亲切的问候,

罗纳德·维尔登伯格

最佳答案

Silverlight 不支持仅在 WPF 中支持的 x:ClassModifier。

此外,x:Class 在资源字典中无效。当然,当尝试将资源字典中的 Xaml 作为合并字典包含时,Silverlight 将不知道此时如何处理 x:Class。

实际上,上面的内容严格来说并不正确 x:Class 是有效的,但是您将字典包含在应用程序字典中的方式需要调整。首先我要声明的是,这里假设您实际上需要对 ResourceDictionary 进行子类化(如果不只是删除 x:Class)。

基于您包含的 x:ClassModifier,我也将采取冒险行动,因为您的项目中实际上没有 ProvisiorResourceDictionary.xaml.cs 文件。由于 SL 总是创建一个公共(public)部分,因此您需要此文件至少包含:-

public partial class ProvisiorResourceDictionary
{
    public ProvisiorResourceDictionary()
    {
        InitializeComponent();
    }
}

也就是说,如果还没有这样的东西,那么你也可以完全删除 x:Class 。

现在您的 app.xaml 需要如下所示:-

<Application.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
      <common:ProvisiorResourceDictionary /> 
    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Application.Resources>

现在,您不再尝试通过 Source 属性将 XAML 文件作为资源导入,而是包含专用 ResourceDictionary 的实例。

关于silverlight - 在 Silverlight 资源字典后面添加代码时出错 : AG_E_PARSER_BAD_TYPE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1728015/

相关文章:

silverlight - UseLayoutRounding = true时的性能影响

c# - 域服务与 WCF 服务?

silverlight - 使用 Style 动态更改 ListBox 方向

wpf - 无法解析 StaticExtension 值

c# - 如何将 WPF ComboBox 绑定(bind)到 XAML 中的 List<Objects>?

c# - XamlReader.Parse 在空字符串上引发异常

wcf - 如何将字节数组从 Silverlight 保存到文件

c# - silverlight 3 中的路由事件?

Silverlight 组合框问题

c# - 我想在删除 OOB 应用程序时删除存储在独立存储中的文件