2010-09-10 2 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.

Спасибо, Tim

+0

+1 потому что у меня было такое же сообщение об ошибке и для моей цели, что делает класс общедоступным достаточно хорошим, поэтому это решило мою проблему. –

+0

+1, потому что я столкнулся с этой проблемой с внутренним классом, который используется в моем словаре Application.Resources – Phil

ответ

2

Наиболее позднего связывания сценариев использования отражения и требуют методов/членов/свойства должны быть открытыми.

Почему вы не можете оставить его общедоступным в этом случае?

+0

Это не один класс - это целое пространство имен классов, которые не предназначены для использования конечным пользователем моей библиотеки. CLR имеет множество внутренних классов, поэтому я не думаю, что я пытаюсь сделать что-то необоснованное, не так ли? –