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

时间:2013-03-21 23:12:11

标签: windows-8 visual-studio-2012 windows-runtime

对于Windows应用商店应用,我正在尝试开发一些自定义控件(我实际上使用模板化控件来执行此操作,如果这很重要)。我得到了一个相当模糊的错误(如标题中所示)。唯一的补充信息是:

WinRT information: Cannot create instance of type 'SoundControls.tcNote' [Line: 13 Position: 51]

我不确定问题是否与Generic.xaml文件有关,其中定义了控件的布局(我认为错误似乎指向)或文件背后的代码。

无论哪种方式,两者都是第13行:

Generic.xaml

BorderBrush="{TemplateBinding BorderBrush}"

背后的代码

using Windows.UI.Xaml.Controls.Primitives;

两者似乎都毫无意义且无害。有没有人有什么想看更接近解决这个错误的想法?我愿意发布代码片段等(相关/请求),但我总是讨厌看一个问题而只看到代码页。

修改

根据要求构造函数:

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" />

该行看起来有错误(蓝色下划线,但它仍然让我构建)如果我将鼠标悬停在它上面,它说“委托给一个实例方法不能为'''。”问题似乎是* PART_note *尚未提供。我需要将构造函数中的这些行移动到 OnApplyTemplate 方法中。

3 个答案:

答案 0 :(得分:1)

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

  1. 检查InnerException(重复此步骤直到 null )以更好地了解正在发生的事情。修复它。

  2. 如果没有InnerException(或者它太模糊)我会注释掉所有XAML并开始慢慢将其恢复。这有助于查明违规的XAML或代码。

答案 1 :(得分:0)

您是否可以在第13行的其他XAML文件中实例化SoundControls.tcNote?错误可能源自那里。

问题可能是:

  • 在你的控件的构造函数中:你确定GetTemplateChild("PART_note") as Thumb不是null吗?如果你注释掉这些行会有帮助吗?
  • 或其XAML中的某处:由于某些其他错误的无法解析的StaticResource引用来解析错误。

我会通过最小化控件中的代码/ XAML数量并查看问题是否消失来开始解决问题。

答案 2 :(得分:0)

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