Как реализовать mdi в приложении WPF

Я новичок в WPF, и мне очень нравятся MDI-приложения.

Это позволяет мне быстро перемещаться между окнами и сравнивать содержимое разных окон. Кроме того, когда-то содержимое одного окна полезно для другого, поэтому я могу копировать и вставлять. Я думаю, что это отличный пользовательский интерфейс для рабочего режима.

Правильная или неправильная практика, мне это нравится.

Я видел Stack вопрос о переполнении MDI в WPF, и там они предоставили Visual &nbsp, Studio 2010 в качестве примера. Я не понимал, можно ли и как можно реализовать эту среду: например, иметь вкладки, которые можно отрывать на независимом экране (что менее важно для меня) и переставлять бок о бок вместе с остальными вкладками.

Я предполагаю, что я ищу "систему компоновки стыковки в WPF", googleing это предложение сторонних компонентов.

Я думаю, что начну с "нормального" приложения. Похоже, здесь нет простой реализации из коробки.

Ответы

Ответ 1

В CodePlex есть два популярных проекта:

  • AvalonDock - библиотека стыковки в стиле Visual Studio и
  • WpfMdi, который является классическим диспетчером окон MDI.

AvalonDock поддерживает отдельные комбинации вкладок бок о бок, а также отрывающие окна, такие как Visual Studio, поэтому он должен предоставить вам все, что вам нужно, хотя и не совсем классический MDI. Он используется в SharpDevelop, поэтому вы можете загрузить его для воспроизведения и получить представление о том, как можно использовать библиотеку док-станции.

Edit:

И я нашел третий, который выглядит очень эффектно: Chronos WPF.

Ответ 2

По какой-то причине Microsoft решила, что MDI ошибается. Существует много информации об этом при поиске в Google.

Я считаю, что неправильно убивать то, что понравилось многим людям, и на форумах, которые я посетил, некоторые люди указывают на новый пример Microsoft, который работает в MDI, чтобы подчеркнуть, что это законный способ создания приложения.

Я ненавижу плавать против потока, поэтому я ушел, как только понял, что, несмотря на то, что возможно создать приложение MDI с современным приложением Microsoft, таким как silverlight, wpf и, возможно, даже windows-phone, Microsoft действительно распознает его и не делает "Я предлагаю любую поддержку (насколько я знаю).

Надеюсь, что это помогает другим узнать, что случилось с нашим добрым старым MDI "Отцом".

Ответ 3

Я не думаю, что это встроенный способ сделать это. Однако вы можете захотеть взглянуть на покупку набора пользовательских элементов управления от таких людей, как DevExpress, Component One, Infragisitcs, Telerik... Я думаю, большинство из них будет иметь аналогичный контроль над тем, как работает VS2010. Я знаю, что DevExpress делает.