c # WPF, как создать предупреждение - PullRequest
1 голос
/ 04 июля 2011

Я изучаю WPF, так что терпите меня.

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

Что лучшеспособ "уведомить" пользователя?Я действительно хочу, чтобы пользователь реагировал!

Приветствия, Патрик

Среда: Windows7 / 64bit / .Net4

Ответы [ 2 ]

2 голосов
/ 04 июля 2011

Если вы хотите, чтобы пользователь реагировал, вы можете заставить его просто открыть модальный диалог. Самым легким из них является MessageBox . Вы также можете создавать обычные модальные окна, используя их метод ShowDialog, вы можете сделать эти окна "причудливыми", как вам хочется, избавившись от их обычного внешнего вида. Это достигается установкой WindowStyle на None и AllowsTransparency на true, это удалит все элементы фрейма, поэтому в окне теперь чистое содержимое.

Popups удобны для немодальных уведомлений, и они уже доступны только для контента, но установка их AllowsTransparency в true также может быть желательна, если вы хотите, например, скругленные углы.

0 голосов
/ 04 июля 2011

Best является полностью субъективным и зависит от многих контекстных переменных, но вот как я это делаю в стиле MVVM.

В вашей модели основного вида определите свойство

pubic ObservableCollection<AlertViewModel"> Alerts { get; private set; }

в моем случае AlertViewModel имеет только свойство «Message» и RelayCommand «Dismiss».

В XAML вашего основного представления добавьте

<Grid>
    <all of my other other view controls>
    <ItemsControl x:Name="AlertsControl" Opacity="50" ItemsSource="{Binding Alerts}"/>
</Grid>

Убедитесь, что это последний элемент в главном контейнере вашего основного вида. Это гарантирует, что он имеет самый высокий z-порядок и будет отображаться поверх всех других элементов управления.

Вот шаблон данных для этой модели вида

<DataTemplate DataType="{x:Type vm:AlertViewModel}">
   <Border CornerRadius="10" Margin="3" Background="Red">
     <Grid>
       <Grid.ColumnDefinitions>
         <ColumnDefinition Width="75"></ColumnDefinition>
         <ColumnDefinition></ColumnDefinition>
       </Grid.ColumnDefinitions>
       <Button Margin="10" Grid.Column="0" 
               Command="{Binding ElementName=theWindow, Path=DataContext.DismissAlarmCommand}" 
               CommandParameter="{Binding}">Dismiss</Button>
       <TextBlock  Foreground="White" FontWeight="ExtraBold" Grid.Column="1" 
               Text="{Binding Message}"  FontSize="20" 
               VerticalAlignment="Center" HorizontalAlignment="Left"></TextBlock>
     </Grid>
   </Border>
</DataTemplate>

Теперь

Alerts.Add( new AlertViewModel() { Message = "Danger Will Robinson! Danger!" } );

Появится ярко-красное окно оповещения в верхней части главной формы. Он не уходит, пока пользователь не нажмет «Отклонить»

Если вы хотите, чтобы он мигал, затемнялся или исчезал или подпрыгивал вверх и вниз, вы можете добавить анимацию в шаблон данных.

Вы можете использовать конвертер или данные для включения / отключения остальных элементов управления в привязке байтов приложения к AlertsControl.HasItems

Удачи.

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