WPF уведомления - PullRequest
       11

WPF уведомления

9 голосов
/ 03 ноября 2010

Как я могу создавать уведомления для своих приложений WPF, например, тех, которые в браузерах показывают сообщения через «панель инструментов» в верхней части браузера или через уведомление в стиле «MSN» через всплывающее окно, которое скользит вверх / вниз в нижней части справа от экрана. Может быть, панель, которая постепенно исчезает в центре приложения, подойдет к

1 Ответ

11 голосов
/ 04 ноября 2010

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

Вот несколько вариантов: MessageBox Это самый простой вариант - если вы хотите уведомить вашего пользователя простым сообщением, которое он должен подтвердить, чтобы продолжить, то просто покажите сообщение в MessageBox .

Roll YourСобственный диалог Если MessageBox не совсем это делает, и вы хотите показать больше или разные виды информации, то вы можете просто создать новое окно и открыть его с помощью метода ShowDialog () , заставляя пользователязакройте его (подтвердите), прежде чем продолжить.

StatusBar Если вы просто хотите передать информацию, вы можете просто добавить StatusBar внизу вашего диалога.Я связался с хорошим примером от поддерживающего SO'er Kent Boogaart .Обратите внимание, что вы не ограничены только текстом в StatusBar - вы можете добавить к нему любой элемент UIElement, чтобы вы могли иметь изображения, индикаторы выполнения и т. Д.

Некоторая другая панель У вас также может быть какая-то другая панель (на вашем примере, StackPanel или что-то в верхней части вашего приложения), для которой для параметра Visibility установлено значение Collapsed, если в этом нет необходимости.Вы также можете иметь, например, границу с некоторым содержимым, которое отображается перед остальными элементами UIE в вашем диалоге.Вы можете использовать элемент управления PopUp .

Если вы идете по маршруту «дополнительная панель» (который, возможно, наиболее соответствует тому, что вы спрашиваете), тогда может быть неплохо сделать некоторыетрюки с анимацией, чтобы добавить немного флеш в ваше приложение.Такие вещи, как перемещение панели на место или анимация непрозрачности и т. Д. Если вы размещаете информацию поверх остального содержимого окна, вы также можете поиграть с непрозрачностью, чтобы сделать панель полупрозрачной - достаточно темной, чтобы ее можно было видеть и читать, но также позволяя пользователю увидеть немного окна за ним.

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

<Window ...>
    <Grid x:Name="gridMainLayout">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <StackPanel x:Name="stackNotificationArea"
                    Grid.Row="0"
                    Orientation="Horizontal"
                    Background="LemonChiffon"
                    Visibility="Collapsed">

            <TextBlock x:Name="txtMessage"
                       Text="{Binding NotificationMessage}" />
            <Button x:Name="btnAcknowledge"
                    Content="Acknowledge" />
        </StackPanel>

        <!-- Rest of your window goes here -->
        <Grid x:Name="gridContent"
              Grid.Row="1">

              <!-- Content of window -->

        </Grid>

</Window>

В приведенном выше примере я предполагаю, что есть свойство с именем NotificationMessage, которое возвращаетпоследнее уведомлениеВы можете жестко запрограммировать это в тексте, или как угодно.Вероятно, было бы лучше связать видимость StackPanel, основываясь на том, были ли какие-либо уведомления.В любом случае вам придется переключать StackPanel на Visible по мере необходимости.Установка его в Visible автоматически переместит содержимое вашего окна вниз, как вы описали.

Обязательно установите Visibility в Collapsed, когда сообщение будет подтверждено.Если вы установите значение Hidden, StackPanel не будет отображаться, но недвижимость все равно будет удерживаться (т.е. в верхней части вашего приложения будет пустое место).

Конечно, выможет быть настолько причудливым, насколько вам нужно быть здесь - у вас может быть небольшой список со всеми сообщениями, или пара кнопок для прокрутки сообщений, или кнопка для запуска окна со всеми сообщениями, или ...

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