WPF: как реализовать универсальное окно? - PullRequest
3 голосов
/ 10 февраля 2011

Я бы хотел, чтобы в моем настольном приложении было многократно используемое окно, в которое могли бы потенциально вливаться различные xamls. Потому что я хотел бы, чтобы все мои окна выглядели одинаково (у меня есть отличная строка заголовка, кнопка закрытия и т. Д.)

Например, я хотел бы, чтобы в нем использовалось окно сообщения (ok / cancel / string). Я бы хотел, чтобы он использовался для размещения формы и т. Д.

В настоящее время у меня есть:
MyWindow.xaml / cs (это окно)
MyMessageBox.xaml / cs (это пользовательский элемент управления)
MyForm.xaml / cs (это пользовательский элемент управления)

Так, каков наилучший способ реализовать это? Должен ли я просто поместить ContentPresenter в MyWindow, а затем каким-то образом «добавить» в него другие xamls? Нужны ли другие элементы управления для наследования чего-либо из базового окна?

Я просто ищу отзывы о том, как лучше всего делать то, что я пытаюсь сделать. Спасибо

Ответы [ 6 ]

2 голосов
/ 10 февраля 2011

Простой подход - это окно с фреймом, а затем загрузка страниц в этот фрейм по требованию.

1 голос
/ 10 февраля 2011

Я согласен с ответом Хенка Холтермана .Я только что написал небольшой «фреймворк» для приложений WPF такого рода.Я использую интерфейс на страницах контента, чтобы определить общие функциональные возможности для кода;У меня есть общий шаблон страницы, который я использую, чтобы дать мне блок заголовка, кнопку закрытия и т. Д.

Я бы избегал визуального наследования с WPF, если он вам абсолютно не нужен - это может быть довольно сложно сделать правильно.

0 голосов
/ 02 сентября 2013
0 голосов
/ 10 февраля 2011

Я получил несколько советов и подсказок из этой статьи:

http://www.codeproject.com/KB/WPF/CustomFrames.aspx

это было именно то, что я искал!

0 голосов
/ 10 февраля 2011

Вам следует серьезно подумать об использовании Prism (разработанной Microsoft, выходящей из группы Patterns & Practices ) для этого; он был создан для обработки именно этих сценариев, предоставляя инструменты для создания пользовательских интерфейсов .

0 голосов
/ 10 февраля 2011

DataWindow Catel делает именно это.Вы можете найти исходный код здесь:

DataWindow.cs

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