2013-03-21 181 views
1

我試圖開發一些自定義控件(我實際上使用模板控件來做到這一點,如果這件事)的Windows應用程序商店應用程序。我得到一個相當模糊的錯誤(如標題所示)。唯一的附加信息是這樣的:神祕的Windows.UI.Xaml.Markup.XamlParseException

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方法中。

+0

什麼代碼是在13號線,位置51? 'SoundControls.tcNote'的構造函數是什麼樣的? – 2013-03-22 02:46:35

+0

我編輯了問題 – BlargleMonster 2013-03-22 03:20:48

+0

請不要編輯問題以添加答案。這不是別人可以爲它投票或尋找它的地方。 – 2013-03-26 05:22:53

回答

0

您是否可能在第13行的某個其他XAML文件中實例化了SoundControls.tcNote?錯誤可能源於此處。

問題可能是兩種:

  • 在控件的構造函數:你確定GetTemplateChild("PART_note") as Thumb不爲空?如果你註釋掉這些行,它有幫助嗎?
  • 或其XAML中的某處:解析錯誤,因爲無法解析某些其他錯誤的referencesor。

我會開始通過最小化控件中代碼/ XAML的數量來解決問題,並查看問題是否消失。

+0

我在構造函數中評論了那些,並讓它運行。正如我現在的問題所指出的,我需要將這些移到OnApplyTemplate方法。 – BlargleMonster 2013-03-26 04:25:25

1

當我遇到這個錯誤我做兩件事情:

  1. 檢查的InnerException(重複此步驟,直到它)來獲取正在發生的事情的一個更好的主意。修理它。

  2. 如果沒有InnerException(或者它太模糊),我會將所有XAML註釋掉,並開始慢慢地將其返回。這有助於查明有問題的XAML或代碼。

+0

不幸的是,我沒有內部例外檢查。 – BlargleMonster 2013-03-26 04:08:58

+0

如果沒有InnerException,它可能不是XAML。 XAML解析器幾乎總是給出內隱感知。是的,你是正確的。它只是在'OnApplyTemplate'之前,控制和它的內部控制建立起來。因此,將GetTemplateChild代碼移動到該方法是正確的。 – 2013-03-26 05:22:24

0

我意識到這是一個老問題。我只是偶然發現了這個錯誤,在我的情況中,這是因爲在一種語言資源中,我設置了文本框的文本,該文本也綁定到視圖模型中的屬性。當然,在例外情況中沒有關於這方面的線索,內部例外已關閉,並且僅在模擬器上顯示,因爲本地計算機正在使用其他文化。這使得難以追蹤。也許這會幫助一些不幸的靈魂。