2

У меня есть набор UserControls, который должен иметь несколько похожих свойств. Таким образом, я определил абстрактный подкласс UserControl, который определяет эти свойства и обновил файлы .xaml.cs и .g.cs, чтобы наследовать этот базовый класс. Все хорошо компилируется и работает хорошо. Большой! Но файлы .... .g.cs генерируются и будут восстановлены, поэтому как мне сообщить Blend или Visual Studio сохранить наследование от моего базового класса, а не UserControl?Унаследовано от абстрактного подкласса UserControl

ответ

6

Вы должны менять XAML немного префикс декларации UserControl с пространством имен:

<local:MyBaseControl x:Class="MyNameSpace.MyControl" 
    xmlns:local="clr-namespace:MyNameSpace" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 

    <!-- Content --> 
</local:MyBaseControl> 

Где MyNameSpace это ваше пространство имен (! Дух), MyBaseControl ваш базовый класс и MyControl ваш контроль, который наследует из MyBaseControl. Часть x: Class не обязательно должна находиться в одном и том же пространстве имен, я просто сохранил ее для примера.

Дополнительная информация here и here.

+0

Еще один вопрос, потому что, хотя этот компилятор отлично компилируется, Expression Blend теперь дает мне «Исключение: не удается создать экземпляр« MyBaseControl ». Есть ли способ сделать это, тем не менее, использовать Blend? –

+0

Стив: В вашем коде есть опечатка, когда вы закрываете локальный тег. У меня нет полномочий для редактирования. –

+0

Заметка о проблеме, с которой я столкнулся: если компилятор говорит, что он не может найти тег в вашем пространстве имен: это может быть потому, что сборка, содержащая локальное пространство имен, не создается. –

Смежные вопросы