Разделение интерфейса WPF на несколько файлов Xaml

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

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

Благодарность


person Dave Turvey    schedule 22.10.2008    source источник


Ответы (4)


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

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

Затем вы можете ссылаться на свой пользовательский элемент управления в 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 ... />

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

person stusmith    schedule 22.10.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-файл меньшего размера — определить собственные элементы управления, которые затем будут использоваться в основном приложении.

person EFrank    schedule 22.10.2008
comment
Да, прямой ответ. Он также работает с ‹Window.Resources› - person Goodies; 10.06.2016

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

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

person Mike de Klerk    schedule 17.10.2016

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

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

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

person Andrey Neverov    schedule 22.10.2008