2010-08-19 25 views
1

我創建了這個類,我想重寫這個內容控件的特定事件。如何正確使用Subclassed silverlight控件?

public class MyContentControl : ContentControl 
{ 
    protected override void OnKeyUp(KeyEventArgs e) 
    { 
     //do something 
     //.......... 
     e.Handled = true; 
    } 
} 

然而,當我使用這個控制在我的XAML一切編譯和工作正常,但我得到一個運行時異常,我不知道究竟是爲什麼?可能有人點我在正確的方向....

我得到的例外是

XamlParseException

被更新(顯示了異常的abouts)

在XAML我有:

xmlns:ctrls="clr-namespace:SilverlightProject.CustomControls" 

和我用它lik E:

<ctrls:MyContentControl Grid.Column="0" x:Name="_contentControl" VerticalAlignment="Center" HorizontalAlignment="Center" /> 
+0

也許你可以向我們展示導致異常的相關Xaml。到目前爲止,我看不到任何會導致此異常的東西 – AnthonyWJones 2010-08-19 14:49:14

+0

@AnthonyWJones:我更新了我的問題。 InitializeComponent()發生異常,它給出了我放置/初始化「MyContentControl」的xaml的行號。 – VoodooChild 2010-08-19 16:05:13

+0

我無法重現您的問題,逐字複製您的代碼不會導致錯誤。這是一個模板控件嗎?你有MyContentControl的默認樣式嗎? – AnthonyWJones 2010-08-19 16:41:05

回答

0

內容控件需要默認模板在某處被創建(例如在generic.xaml中)。他們沒有像用戶控件一樣的匹配XAML文件。

如果您可以提供更多信息,我可以告訴您如何創建適當的模板。

+0

我可以提供什麼樣的信息? – VoodooChild 2010-08-19 21:40:59

+0

您正試圖解決的問題/控制的目的。您提供的代碼/ XAML越多,就越容易理解並提供解決方案/示例。 – 2010-08-20 07:29:01

+0

如果你不想在這裏發佈太多,你可以隨時通過我們的網站與我們聯繫。很高興提供示例/建議(儘管直到週日)。 – 2010-08-20 07:31:43

0

有很多原因。
開始。給出完全限定的名稱空間。

而不是

xmlns:ctrls="clr-namespace:SilverlightProject.CustomControls" 

使用

xmlns:ctrls="clr-namespace:SilverlightProject.CustomControls;assembly=YourAssebmlyName" 

如果,沒有幫助。 您直接將您的控件附加到應用程序。然後,啓用調試 - >例外。檢查CLR豁免複選框的Thrown選項。你有很大的可能性去了解原因。

+0

通過添加'assembly'我收到一個異常「Assembly ....已被篡改!」 – VoodooChild 2010-08-24 06:05:22

+0

你使用密鑰文件簽署程序集嗎? – 2010-08-24 10:59:07

+0

不,我不這麼認爲,我甚至不知道那是什麼...... – VoodooChild 2010-08-24 14:24:56