Windows 8 神秘的Windows.UI.Xaml.Markup.XamlParseException

Windows 8 神秘的Windows.UI.Xaml.Markup.XamlParseException,windows-8,visual-studio-2012,windows-runtime,Windows 8,Visual Studio 2012,Windows Runtime,我正在尝试为windows app store应用程序开发一些自定义控件(如果有必要,我实际上正在使用模板控件来实现这一点)。我得到了一个相当模糊的错误(如标题所示)。唯一的补充信息是: WinRT information: Cannot create instance of type 'SoundControls.tcNote' [Line: 13 Position: 51] 我不确定问题是在于定义控件布局的Generic.xaml文件(我认为错误似乎指向该文件)还是代码隐藏文件 无论哪种方

我正在尝试为windows app store应用程序开发一些自定义控件(如果有必要,我实际上正在使用模板控件来实现这一点)。我得到了一个相当模糊的错误(如标题所示)。唯一的补充信息是:

WinRT information: Cannot create instance of type 'SoundControls.tcNote' [Line: 13 Position: 51]
我不确定问题是在于定义控件布局的Generic.xaml文件(我认为错误似乎指向该文件)还是代码隐藏文件

无论哪种方式,这里都是第13行:

Generic.xaml

代码隐藏

两者似乎都是毫无意义和无害的。有没有人对解决这一错误的方法有什么想法?我愿意发布代码片段之类的东西(相关的/要求的),但我总是不喜欢看问题,只看到一页页的代码

编辑:

根据要求,建造商:

this.DefaultStyleKey = typeof(tcNote);

(GetTemplateChild("PART_note") as Thumb).DragStarted += tcNote_DragStarted;
(GetTemplateChild("PART_note") as Thumb).DragDelta += tcNote_DragDelta;
(GetTemplateChild("PART_note") as Thumb).DragCompleted += tcNote_DragCompleted;
第二次编辑/解决方案:

我发现第13行的问题出现在MainPage.xaml中

<SoundControls:tcNote HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" />


该行看起来有一个错误(蓝色下划线,但它仍然允许我构建),如果我将鼠标悬停在该行上,它会显示“委托给实例方法不能有null‘this’。”问题似乎是*PART_note*还不可用。我需要将构造函数中的这些行移到应用程序模板方法中。

您是否可能在第13行的其他XAML文件中实例化
SoundControls.tcNote
?错误可能源于此

问题可能是:

  • 在控件的构造函数中:您确定作为Thumb的
    GetTemplateChild(“PART_note”)不为null吗?如果你把这些行注释掉会有帮助吗
  • 或者由于无法解析的
    StaticResource
    references或其他错误而导致其XAML:parse错误

我将通过最小化控件中的code/XAML数量并查看问题是否消失来开始故障排除。

您是否可能在第13行的其他XAML文件中实例化
SoundControls.tcNote
?错误可能源于此

问题可能是:

  • 在控件的构造函数中:您确定作为Thumb的
    GetTemplateChild(“PART_note”)不为null吗?如果你把这些行注释掉会有帮助吗
  • 或者由于无法解析的
    StaticResource
    references或其他错误而导致其XAML:parse错误

我将通过最小化控件中的代码量/XAML并查看问题是否消失来开始故障排除。

当我遇到此错误时,我会做两件事:

  • 检查InnerException(重复此步骤,直到它为null),以便更好地了解发生了什么。修好它


  • 如果没有InnerException(或者它太模糊),我将注释掉所有XAML并开始慢慢地将其恢复。这有助于找出有问题的XAML或代码


  • 当我遇到这个错误时,我会做两件事:

  • 检查InnerException(重复此步骤,直到它为null),以便更好地了解发生了什么。修好它


  • 如果没有InnerException(或者它太模糊),我将注释掉所有XAML并开始慢慢地将其恢复。这有助于找出有问题的XAML或代码


  • 我意识到这是一个老问题。我只是偶然发现了这个错误,在我的例子中,这是因为在一个语言资源中,我设置了一个文本框的文本,该文本框也绑定到视图模型中的一个属性。当然,在异常中没有关于这一点的线索,内部异常被关闭,并且它只显示在模拟器上,因为本地计算机正在使用另一个区域性。这使得追踪变得困难。也许这会帮助一些不幸的灵魂。

    我意识到这是一个老问题。我只是偶然发现了这个错误,在我的例子中,这是因为在一个语言资源中,我设置了一个文本框的文本,该文本框也绑定到视图模型中的一个属性。当然,在异常中没有关于这一点的线索,内部异常被关闭,并且它只显示在模拟器上,因为本地计算机正在使用另一个区域性。这使得追踪变得困难。也许这会帮助一些不幸的灵魂。

    第13行第51位的代码是什么?“SoundControls.tcNote”的构造函数是什么样子的?我编辑了问题,请不要编辑问题来添加答案。这不是其他人可以投赞成票或寻求支持的地方。第13行第51位的代码是什么?“SoundControls.tcNote”的构造函数是什么样子的?我编辑了问题,请不要编辑问题来添加答案。这不是其他人可以投票支持它或将寻找它的地方。不幸的是,没有内部异常需要我检查。如果没有内部异常,它可能不是XAML。XAML解析器几乎总是给出InnerException。是的,您是正确的。只有在应用程序模板上的
    onapplymetplate
    之前,才建立了控件及其内部控件。因此,将GetTemplateChild代码移动到该方法是正确的。不幸的是,我没有要检查的内部异常。如果没有内部异常,则可能不是XAML。XAML解析器几乎总是给出InnerException。是的,您是正确的。只有在应用程序模板上的
    onapplymetplate
    之前,才建立了控件及其内部控件。因此,将GetTemplateChild代码移动到该方法是正确的。我在构造函数中注释了这些代码,让它运行。正如我现在的问题中提到的,我需要将它们移动到OnApplyTemplate方法中。我在构造函数中注释掉了它们,让它运行。正如我现在的问题中所指出的,我需要将它们转移到OnApplyTemplate方法。
    this.DefaultStyleKey = typeof(tcNote);
    
    (GetTemplateChild("PART_note") as Thumb).DragStarted += tcNote_DragStarted;
    (GetTemplateChild("PART_note") as Thumb).DragDelta += tcNote_DragDelta;
    (GetTemplateChild("PART_note") as Thumb).DragCompleted += tcNote_DragCompleted;
    
    <SoundControls:tcNote HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" />