Частичные объявления не должны указывать разные базовые классы - PullRequest
49 голосов
/ 10 января 2012

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

Кто-нибудь может мне помочь?

Ответы [ 5 ]

57 голосов
/ 10 января 2012

Вы должны изменить свой XAML CountryStandards на:

<src:StandardsDefault x:Class="namespace.CountryStandards" 
    xmlns:src="NamespaceOfStandardsDefault" ... />

Есть хорошая статья о наследовании от пользовательского окна / страницы в WPF.

8 голосов
/ 17 сентября 2017

Немного странный, и он еще не был здесь перечислен ... Но так как ни один из вышеупомянутых ответов не применялся, потому что я правильно объявил и мои файлы xaml, и cs, я сделал следующее, и это, казалось, работало:

Перейдите в папку решения или нажмите кнопку Показать все файлы в Visual Studio и удалите обе папки obj и bin , в результате Visual Studio заново создаст все свои файлы для проекта..

Ваш проект должен теперь правильно собираться / запускаться.

Надеюсь, что это поможет кому-то - или, возможно, мне в будущем.

Редактировать: Это исправление обычно работает, если вы получаете этопроблема после изменения типа страницы, например, с ContentPage на CarouselPage.

4 голосов
/ 10 января 2012

В вашем CountryStandards.xaml вы должны написать

<StandardsDefault x:Class="namespace.CountryStandards"...
0 голосов
/ 01 марта 2016

Вам необходимо использовать StandardsDefault в качестве корневого узла, так как вы создаете пользовательский элемент управления. Так как вы используете страницу в качестве корневого узла, c # компилятор ожидает страницу в качестве базы. но в вашей вы используете StandardsDefault в качестве базы, поэтому вам нужно использовать StandardsDefault в качестве корневого узла, тогда он будет работать.

0 голосов
/ 04 декабря 2015

Убедитесь, что другие частичные классы не расширяют другой класс.

public partial class CountryStandards : StandardsDefault

public partial class CountryStandards : Page

Вы должны сделать так, чтобы они расширяли тот же класс.

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