Разделение интерфейса WPF на несколько файлов Xaml - PullRequest
45 голосов
/ 22 октября 2008

Я пытаюсь создать пользовательский интерфейс с использованием XAML. Однако файл быстро становится очень большим и с ним сложно работать. Каков наилучший способ разбить его на несколько файлов.

Я хотел бы иметь возможность установить содержимое элемента, такого как ComboBox, для элемента, который определен в другом файле xaml (но в том же проекте VS).

спасибо

Ответы [ 4 ]

40 голосов
/ 22 октября 2008

Вы можете разделить большой пользовательский интерфейс, определив UserControls.

Щелкните правой кнопкой мыши по дереву решений, выберите «Добавить» -> «Новый элемент» ... затем «Управление пользователем». Вы можете создать это обычным способом.

Затем вы можете ссылаться на свой usercontrol в XAML, используя объявление пространства имен. Допустим, вы хотите включить свой UserControl в окно. В следующем примере я добавил UserControl с именем «Foo» в пространство имен «YourCompany.Controls»:

<Window x:Class="YourCompany.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:Controls="clr-namespace:YourCompany.Controls">

  <Controls:Foo ... />

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

23 голосов
/ 22 октября 2008

Вы можете разделить файлы XAML, используя ResourceDictionary . ResourceDictionary может использоваться для объединения других файлов:

<Page.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="myresourcedictionary.xaml"/>
      <ResourceDictionary Source="myresourcedictionary2.xaml"/>
    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Page.Resources>

В ResourceDictionary вы также можете объявить стили, которые вы можете использовать в своих элементах, так что основной файл XAML становится меньше.

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

1 голос
/ 17 октября 2016

Вы также можете создать страницу вместо UserControl. Page может быть размещен Window или Frame . Поиск плюсов и минусов Page против UserControl. Это немного зависит от ваших требований в отношении навигации, которая будет лучше всего соответствовать вашим потребностям.

Вот пример использования страницы во фрейме.

0 голосов
/ 22 октября 2008

Используйте стили и пользовательские элементы управления. Разделите ваш интерфейс на более мелкие части и закодируйте их в другие файлы xaml. Пример:

<Window><br> <VeryBigControl><br> <VeryBigControl.Style><br> ... <!--very long style--><br> </VeryBigControl.Style><br> .. <!--content of very big control--><br> </VeryBigControl<br> </Window>

разделите его на три файла xaml:
Window.xaml - это будет Window
VeryBigControl.xaml - это будет UserControl
VeryBigControlStyle.xaml - это будет словарь ресурсов
и так далее:)

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