2010-09-10 84 views
2

我想創建一個Silverlight自定義控件,從System.Windows.Controls.Control派生自internal,但我在嘗試應用默認樣式時看到問題。下面是類的最簡單的形式...默認樣式與內部自定義控件(C#Silverlight)

internal class MyClass : Control 
{ 
    public MyClass() 
    { 
     DefaultStyleKey = typeof(MyClass); 
    } 
} 

...這是在generic.xaml默認樣式簡單的形式...

<Style TargetType="controls:MyClass"> 
    <Setter Property="Margin" Value="10" /> 
</Style> 

雖然這種控制並不做任何有用,可以創建它的一個實例,但前提是其可見性爲public。當類被標記爲internal,該應用程序引發以下運行時錯誤:

Error: Unhandled Error in Silverlight Application 
Code: 4004  
Category: ParserError  
Message: No matching constructor found on type 'MyClass'.  
File:  
Line: 11  
Position: 40  

能否請您指教一下,我需要做,使內部控制類可見的XAML分析器。

感謝, 添

+0

+1因爲我有這個相同的錯誤信息,併爲我的目的,使公共類是足夠好,所以這解決了我的問題。 – 2010-11-10 21:21:26

+0

+1,因爲我遇到了這個問題,在我的Application.Resources字典中使用了一個內部類 – Phil 2012-03-25 21:57:58

回答

2

大多數後期綁定方案使用反射,並要求方法/成員/屬性是公共的。

爲什麼你不能在這種情況下公開它?

+0

它不是一個類 - 它是一個類的整個命名空間,它不打算供我的庫的最終用戶使用。 CLR有許多內部類,所以我不認爲我想做一些不合理的事情,是嗎? – 2010-09-10 11:06:53

相關問題