Частичные объявления не должны указывать разные базовые классы
Ребята Я новичок в WPF.
У меня есть страница wpf с именем StandardsDefault
. В коде позади StandardsDefault
наследует Page
, как и все остальные страницы.
<Page x:Class="namespace.StandardsDefault"
public partial class StandardsDefault : Page
Теперь я создал новый класс CountryStandards
, который наследует StandardsDefault
вместо страницы.
<Page x:Class="namespace.CountryStandards"
public partial class CountryStandards : StandardsDefault
Я не изменил XAML. Я получаю сообщение об ошибке как
"Частичные объявления 'CountryStandards'
не должны указывать разные базовые классы
Я думаю, проблема может заключаться в том, что дизайнер не наследует один и тот же класс.
Но мне нужно каким-то образом реализовать наследование, поскольку существует множество распространенных методов, которые должны использоваться на многих стандартных страницах, таких как CountryStandards
Может ли кто-нибудь помочь мне?
Ответы
Ответ 1
Вы должны изменить свой XAML CountryStandards на:
<src:StandardsDefault x:Class="namespace.CountryStandards"
xmlns:src="NamespaceOfStandardsDefault" ... />
В WPF есть хорошая статья о наследовании от пользовательского окна/страницы в WPF.
Ответ 2
В CountryStandards.xaml
вы должны написать
<StandardsDefault x:Class="namespace.CountryStandards"...
Ответ 3
Бит нечетного, и он еще не был указан здесь... Но так как ни один из вышеприведенных ответов не был применен, потому что у меня были оба права на файлы xaml и cs, я сделал следующее и, похоже, работал
Перейдите в папку решений или щелкните по отображению всех файлов в Visual Studio и удалите папки obj и bin, это заставляет Visual Studio регенерировать все свои файлы для проекта.
Ваш проект должен теперь корректно строить/запускать.
Надеюсь, что это поможет кому-то - или, возможно, самому в будущем.
Изменить: это исправление обычно работает, если вы получаете эту проблему после изменения типа страницы, например, с ContentPage на страницу CarouselPage.
Ответ 4
Убедитесь, что другие частичные классы не расширяют другой класс.
public partial class CountryStandards : StandardsDefault
public partial class CountryStandards : Page
Вы должны заставить их расширять один и тот же класс.
Ответ 5
Вам необходимо использовать StandardDefault как root node, так как вы создаете пользовательский элемент управления. Поскольку вы используете страницу как root node, компилятор С# ожидает, что страница будет базовой.
но в вашем случае вы используете StandardDefault в качестве базы, поэтому вам нужно использовать StandardDefault как root node, тогда он будет работать.