Создать UserControl, производный от абстрактного базового класса, и дать ему X: Name? - PullRequest
2 голосов
/ 23 января 2020

У меня есть неабстрактный пользовательский элемент управления, полученный из абстрактного базового класса, и поэтому я должен использовать абстрактный базовый класс в коде 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 таким образом, когда производный класс не является абстрактным ?

Мои абстрактные и производные классы имеют явно определенные конструкторы по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...