Подтвердить что ты не робот

Частичные объявления не должны указывать разные базовые классы

Ребята Я новичок в 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

Может ли кто-нибудь помочь мне?

4b9b3361

Ответ 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, тогда он будет работать.