У меня есть неабстрактный пользовательский элемент управления, полученный из абстрактного базового класса, и поэтому я должен использовать абстрактный базовый класс в коде XAML в качестве базового. Это действительный код c# с точки зрения наследования типов и создания экземпляров классов. Кажется, что у дизайнера есть проблемы с этим:
MC3054: тип "MyAbstractClass" не может иметь атрибута Name. Типы значений и типы без конструктора по умолчанию можно использовать в качестве элементов в ResourceDictionary
. У меня есть следующая иерархия типов:
public interface IMyInterface { void Init(); }
public abstract class MyAbstractClass: UserControl, IMyInterface
{ public abstract void Init(); }
public MyDerivedClass: MyAbtractClass
{ public void Init() {} }
и следующий раздел xaml
< local:MyAbstractClass x:Name="myObject" x:Class="MyDerivedClass"
xmlns:local="clr-namespace:MyNameSpace" >
...
При компиляции я получаю ошибку MC3054 из заголовка.
Изменение абстрактного класса на неабстративный делает его компилируемым и исполняемым.
Почему невозможно использовать абстрактный базовый класс в xaml таким образом, когда производный класс не является абстрактным ?
Мои абстрактные и производные классы имеют явно определенные конструкторы по умолчанию.