Должен ли я использовать страницу, окно или UserControl - PullRequest
26 голосов
/ 17 февраля 2011

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

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

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

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

Спасибо

Ответы [ 2 ]

35 голосов
/ 17 февраля 2011

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

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

При создании нового приложения 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 - это пользовательские элементы управления, инкапсулирующие аспекты этого окна при необходимости.

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

Также - да, страница являетсячасть WПриложение PF Browser, предназначенное для просмотра в Internet Explorer.

9 голосов
/ 17 февраля 2011

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

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

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

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