Базовый класс для видов в приложении навигации - PullRequest
1 голос
/ 09 августа 2011

Попытка создать базовый класс для моих видов в моем бизнес-приложении Silverlight 4, чтобы в моем приложении были доступны общие методы. К сожалению, это приводит к следующей ошибке:

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

Похоже, что Silverlight создает еще один частичный класс для этого представления. Есть ли способ заставить это работать?

Я попытался указать подкласс в XAML представления следующим образом:

х: Подкласс = "SomeApp.Views.PageBase"

Это не сработало.

1 Ответ

2 голосов
/ 10 августа 2011

Да "Sivlerlight" создает другой частичный класс (фактически это Visual Studio / MSBuild, который это делает).Когда вы сохраняете файл .xaml с действием по компиляции «Compile», создается динамический файл .gics.Он содержит частичный класс, соответствующий свойству x:Class, и наследуется от класса, представленного узлом верхнего уровня в Xaml.

Следовательно, xaml выглядит так: -

 <UserControl x:Class="SilverlightApplication1.MyControl" ... />

СгенерируетMyControl.gics, содержащий что-то вроде: -

 namespace SilverlightApplication1 {
     public partial class MyControl : System.Windows.Controls. UserControl {

    ....

Файл с выделенным кодом должен совпадать.

Следовательно, если вы создаете новый базовый класс для наследования, ваш элемент верхнего уровнядолжен соответствовать базовому классу.

<local:PageBase xmlns:local="clr-namespace:SomeApp.Views" x:Class="SomeApp.Views.Home" ... />

См. также: как создать многопользовательский элемент управления, указывающий один код за файлом в silverlight 4

...