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

Должен ли я использовать страницу, окно или UserControl

Я новичок в WPF и разрабатываю новое настольное приложение, которое будет иметь несколько "окон", таких как панель инструментов, средство просмотра событий, средство просмотра диаграмм, чтобы назвать несколько. По сути, пользователь переключается между одним из этих представлений, которое будет охватывать весь экран, а не только его часть.

В настоящее время я зацикливаюсь на том, должен ли я создавать новое окно, страницу или UserControl для каждой панели мониторинга, просмотра событий, просмотра диаграмм и т.д.

Я прочитал и понял, что страницы были созданы для навигации, что, в свою очередь, позволяет мне вести историю навигации, чтобы я мог вернуться/вперед. Однако я не думаю, что мне нужна эта функциональность для моего настольного приложения.

Могу ли я использовать либо UserControl, либо Window? Или должно быть только одно окно для каждого приложения?

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

Спасибо

4b9b3361

Ответ 1

В окне есть такие вещи, как панель заголовка (включая кнопки min/max/close и т.д.) и может использоваться для размещения элементов XAML, таких как элементы управления пользователя.

Вы, конечно, не ограничены использованием одного окна для каждого приложения, но некоторые приложения выбрали бы этот шаблон (одно окно, содержащее множество UserControls).

Когда вы создаете новое приложение WPF, по умолчанию ваше приложение настроено (в App.xaml) следующим образом:

<Application x:Class="WpfApplication1"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         StartupUri="MainWindow.xaml">
    <Application.Resources>

    </Application.Resources>
</Application>

Свойство StartupUri сообщает приложению, что Окно открывается первым (вы можете настроить это, если хотите)

Если вы хотите логически отделить свое окно от кусков и не хотите слишком много XAML в одном файле, вы можете сделать что-то вроде этого:

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfApplication1"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="50" />
            <RowDefinition />
        </Grid.RowDefinitions>

        <local:HeaderUserControl Grid.Row="0" />
        <local:MainSectionUserControl Grid.Row="1" />
    </Grid>
</Window>

где HeaderUserControl и MainSectionUserControl - это UserControls, инкапсулирующие аспекты этого окна, если это необходимо.

Если вы хотите показать другое окно, вы можете в коде вызвать Show или ShowDialog в экземпляре нового окна, которое вы хотите показать...

Также - да, страница является частью приложения браузера WPF, предназначенного для просмотра в Internet Explorer.

Ответ 2

Страница - это то, что вы использовали бы в браузере, а не для отдельного приложения.

Класс Window представляет собой объект верхнего уровня, то есть он не должен содержаться в другом элементе управления. Все окна, которые вы видите при использовании ОС Windows (если они были WPF-приложением), создавались бы из класса Window, и вы бы использовали класс Window для создания собственных окон.

Класс UserControl позволяет создавать новые настраиваемые элементы управления, если стандартный элемент управления уже не существует для того, что вам нужно. UserControl может содержаться внутри окна или другого элемента управления, но окно не содержится ни во что (это большая разница!)