Подтвердить что ты не робот

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

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

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

спасибо

4b9b3361

Ответ 1

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

Щелкните правой кнопкой мыши по дереву решений, выберите Add- > New Item... затем User Control. Это можно сделать обычным способом.

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

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

Ответ 2

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

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

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

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

Ответ 3

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

Ниже приведен пример использования страницы в кадре.

Ответ 4

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

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

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