1

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

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

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

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

通用的.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" />

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

4

3 回答 3

1

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

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

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

于 2013-03-22T05:46:14.160 回答
0

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

问题可能是:

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

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

于 2013-03-22T05:40:27.827 回答
0

I realize this is an old question. I just stumble into this error, in my case it was because in one language resource i was setting the Text of a Textbox that was also bound to a property in the view model. Of course, there was no clue about this in the exception, the inner exception was closed, and it only showed on the emulator, since the local machine was using another culture. This made it difficult to track down. Maybe this will help some unfortunate soul.

于 2016-12-01T18:29:22.217 回答