WPF мы можем поменять панели (DockPanel, StackPanel)? - PullRequest
0 голосов
/ 09 июня 2011

Я хочу создать два разных типа DockPanels. Если пользователь нажимает на одну ссылку, он загружает DockPanel # 1, в противном случае он загружает # 2.

Можем ли мы динамически поменять их местами? Я новичок в WPF. В REALBasic я бы использовал GroupPanels и при необходимости менял их местами.

Спасибо

Ответы [ 2 ]

2 голосов
/ 09 июня 2011

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

1 голос
/ 09 июня 2011

Взгляните на Статья Джоша Смита о MVVM в MSDN Magazine .Многие считают Джоша гуру MVVM, и эта статья хорошо объясняет основы.

Имея это в виду, я бы, вероятно, сделал ваше приложение MVVM-приложением.

Модель "просто" будет вашей моделью данных (во многом как в MVC).

Далее будет представление для каждой из ваших панелей.Каждое представление может быть настроено как DataTemplate (как в статье) или как UserControl (как я уже делал и видел, что делал и во многих других местах).Это делает его модульным, его проще расширять, обслуживать и т. Д.

Ваше MainWindow действительно также считается представлением, в которое вы помещаете другие представления.

Все виды будут управлятьсяодним или несколькими классами ViewModel.Сколько у вас есть, зависит от вашего дизайна.Как правило, при наличии различных функций у вас будет более или менее однозначное отношение между View и ViewModel (хотя вы, безусловно, можете совместно использовать несколько представлений с одной ViewModel).Также обычно будет один класс «Main ViewModel» для хранения всего вместе.

В общих чертах, учитывая общее описание вашей проблемы, вполне вероятно, что ваша ViewModel будет содержать команду (или команды), обработанныекогда ваш пользователь выбирает ссылку.Эта команда, вероятно, установит какое-либо свойство, которое будет контролировать, какой вид будет отображаться (обычно через Binding).

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

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