2010-08-19 52 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