Как сделать так, чтобы WPF Pages имели общий интерфейс - PullRequest
1 голос
/ 11 ноября 2009

Мы разрабатываем похожее на мастера приложение WPF с фреймом для навигации по различным страницам. Я определяю каждую страницу в отдельном файле xaml и xaml.cs, а затем заставляю приложение перемещаться по странице между рамками.

Все мои страницы в настоящее время наследуются от Page. Я хотел бы иметь общий интерфейс ко всем моим страницам, чтобы я мог получить полиморфный доступ к ним. Однако изменение базового класса страницы приводит к сбою компиляции, поскольку файлы, автоматически сгенерированные Visual Studio из файла xaml, устанавливают для базового класса значение Page, и я получаю сообщение об ошибке, из-за которого частичные объявления не должны указывать разные базовые классы. 1003 *

Один вариант, который у меня есть, - это добавить другой интерфейс (например, WizardPage) и заставить все классы реализовать этот интерфейс, но это означает, что на каждой странице должны быть реализованы все функции интерфейса, и это неудобно, так как я хочу большинство функций, для большинства страниц иметь пустые реализации по умолчанию.

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

Thasnks
splintor

Ответы [ 2 ]

3 голосов
/ 11 ноября 2009

Вы можете сделать корневой тег вашего xaml классом, который вы также определили. Здесь вы должны извлечь свой базовый класс из Page, а затем вы можете получить классы страниц из своего базового класса.

public class MyBaseClass : Page
{
    .....
}

вы можете получить классы вашей страницы из такого класса:

public partial class MyDeriveClass : MyBaseClass
{
    .............
}

и в вашем xaml напишите

<y:MyBaseClass y="add your Namesapace here" and add other attribute of Page also like default namespace and xmlns:x>
    ...............
</y:MyBaseClass>
0 голосов
/ 11 ноября 2009

Создайте своего рода страницу адаптера, которая расширяет Page и реализует WizardPage, который предоставляет пустые реализации методов WizardPage. Затем заставьте другие ваши страницы расширять WizardPage.

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