WPF - Обмен и вставка файлов xaml для создания различных дизайнов экрана - PullRequest
1 голос
/ 09 апреля 2009

Я создаю приложение, которое использует MS Ribbon Control. Лента имеет несколько вкладок. Первая вкладка помечена как «Вид», следующая - «Настроить».

В представлении я показываю вид нашей системы, который выложен в файле Window1.xaml. Когда я нажимаю вкладку «Настройка», я бы хотел, чтобы представление исчезло и было заменено другим xaml, предпочтительно другим xaml, чем то, что есть в Window1.xaml. Элемент управления ленты не исчезает, а служит навигатором для разных экранов. В настоящее время, когда я нажимаю вкладку «Настройка», я сворачиваю сетку, содержащую все элементы управления для экрана «Просмотр» (кроме ленты), и делаю видимой сетку, содержащую элементы управления для экрана «Настройка».

Когда я добавляю xaml для экрана Configure в файл Window1.xaml, что я и делаю в настоящее время, он, конечно, отображается в Designer вместе с экраном View. Добавление xaml для экранов, которые будут отображаться для других вкладок, делает это непрактичным.

Мне интересно, как это сделать. Я хотел бы создать xaml-файлы для каждого из экранов «вкладок» и активировать их при нажатии вкладок, как если бы у каждого из них было свое собственное приложение, которое могло приходить и уходить.

Я пока немного знаю о навигации по страницам (мне всего несколько месяцев в WPF), но я думаю, что это может быть путь. Не уверен, что Лента играет очень хорошо в этом сценарии.

Буду признателен за любое направление. Спасибо.

Ответы [ 4 ]

2 голосов
/ 09 апреля 2009

этого вполне можно достичь, используя RegionManager CompositeWPF , добавляя представления в регионы и отключая их, когда должен отображаться другой вид. По крайней мере, это то, что я сделал в довольно похожем сценарии, и это сработало отлично. и поскольку вы заявили, что хотите, чтобы они вели себя «так, как будто каждое из них было своим собственным приложением», модульность поставляется бесплатно с compositewpf.

0 голосов
/ 09 апреля 2009

Я бы использовал элемент Frame. Это позволяет вам загружать XAML с других страниц, используя свойство source, например так:

<Frame Source="Configure.xaml"/> 

Таким образом, когда вы нажимаете кнопку конфигурации, вы можете настроить событие, которое создаст новый TabItem с элементом frame в качестве контента, который загрузит XAML, который вы хотите увидеть.

0 голосов
/ 09 апреля 2009

Обычно это называется «скиннингом» вашего приложения, здесь - это одна статья о скининге, являющаяся лишь частью вашего приложения. Если вы работаете со скинами Google и WPF, вы получите множество примеров кода о хороших способах сделать это.

0 голосов
/ 09 апреля 2009

Вы должны создать содержимое ваших вкладок View и Configure в свои собственные UserControls. Это все еще позволит вам программно менять их местами, но даст вам возможность редактировать каждую из них отдельно в вашем конструкторе.

Если вы используете Expression Blend, вы можете щелкнуть правой кнопкой мыши по любому дочернему элементу контейнера на Панели взаимодействия, и вам будет предоставлена ​​опция «Создать контроль». Если вы сделаете это на вкладках «Настройка» и «Просмотр», большая часть работы будет выполнена за вас.

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