Разделение интерфейса WPF на несколько файлов Xaml
Я пытаюсь создать пользовательский интерфейс с помощью XAML. Тем не менее, файл быстро становится очень большим и трудным для работы. Каков наилучший способ разделить его на несколько файлов.
Я хотел бы иметь возможность устанавливать содержимое элемента, такого как ComboBox, элементу, который определен в другом файле xaml (но в том же проекте VS).
спасибо
Ответы
Ответ 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 - это будет ресурсный словарь
и так далее:)