Есть ли эквивалент MessageBox в WPF?
есть ли стандартное окно сообщения в WPF, например WinForms'System.Windows.Forms.MessageBox.Show(), или я должен использовать окно сообщения WinForms?
9 ответов:
эквивалент WPF будет
System.Windows.MessageBox. Он имеет очень похожий интерфейс, но использует другие перечисления для параметров и возвращаемого значения.
вы можете использовать это:
MessageBoxResult result = MessageBox.Show("Do you want to close this window?", "Confirmation", MessageBoxButton.YesNo, MessageBoxImage.Question); if (result == MessageBoxResult.Yes) { Application.Current.Shutdown(); }для получения дополнительной информации посетите MessageBox в WPF.
эквивалент WinForms'
MessageBoxв WPF называетсяSystem.Windows.MessageBox.
WPF содержит следующий MessageBox:
if (MessageBox.Show("Do you want to Save?", "Confirm", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) { }
MessageBox в расширенном наборе инструментов WPF очень хорош. Это в Microsoft.Окна.Контроли.MessageBox после ссылки на DLL инструментария. Конечно, это было выпущено 9 августа 2011 года, так что это не было бы вариант для вас изначально. Его можно найти по адресу Codeplex для всех, кто там смотрит вокруг.
Как говорят другие, есть
MessageBoxв пространстве имен WPF (System.Windows).проблема в том, что это тот же MessageBox с ОК,отмена и т. д. Для Windows Vista и Windows 7 перешли на использование задач диалогов.
к сожалению, нет простого стандартного интерфейса для задач диалогов. Я использую реализация из CodeProject KB.
в WPF кажется этот код
System.Windows.Forms.MessageBox.Show("Test");заменено:
System.Windows.MessageBox.Show("Test");
может быть, код здесь ниже помогает:
using Windows.UI.Popups; namespace something.MyViewModels { public class TestViewModel { public void aRandonMethode() { MyMessageBox("aRandomMessage"); } public async void MyMessageBox(string mytext) { var dialog = new MessageDialog(mytext); await dialog.ShowAsync(); } } }
если вы хотите иметь свой собственный красивый WPF MessageBox: Создайте новые окна Wpf
вот xaml:
<Window x:Class="popup.MessageboxNew" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:popup" mc:Ignorable="d" Title="" SizeToContent="WidthAndHeight" WindowStartupLocation="CenterScreen" WindowStyle="None" ResizeMode="NoResize" AllowsTransparency="True" Background="Transparent" Opacity="1" > <Window.Resources> </Window.Resources> <Border x:Name="MainBorder" Margin="10" CornerRadius="8" BorderThickness="0" BorderBrush="Black" Padding="0" > <Border.Effect> <DropShadowEffect x:Name="DSE" Color="Black" Direction="270" BlurRadius="20" ShadowDepth="3" Opacity="0.6" /> </Border.Effect> <Border.Triggers> <EventTrigger RoutedEvent="Window.Loaded"> <BeginStoryboard> <Storyboard> <DoubleAnimation Storyboard.TargetName="DSE" Storyboard.TargetProperty="ShadowDepth" From="0" To="3" Duration="0:0:1" AutoReverse="False" /> <DoubleAnimation Storyboard.TargetName="DSE" Storyboard.TargetProperty="BlurRadius" From="0" To="20" Duration="0:0:1" AutoReverse="False" /> </Storyboard> </BeginStoryboard> </EventTrigger> </Border.Triggers> <Grid Loaded="FrameworkElement_OnLoaded"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <Border Name="Mask" CornerRadius="8" Background="White" /> <Grid x:Name="Grid" Background="White"> <Grid.OpacityMask> <VisualBrush Visual="{Binding ElementName=Mask}"/> </Grid.OpacityMask> <StackPanel Name="StackPanel" > <TextBox Style="{DynamicResource MaterialDesignTextBox}" Name="TitleBar" IsReadOnly="True" IsHitTestVisible="False" Padding="10" FontFamily="Segui" FontSize="14" Foreground="Black" FontWeight="Normal" Background="Yellow" HorizontalAlignment="Stretch" VerticalAlignment="Center" Width="Auto" HorizontalContentAlignment="Center" BorderThickness="0"/> <DockPanel Name="ContentHost" Margin="0,10,0,10" > <TextBlock Margin="10" Name="Textbar"></TextBlock> </DockPanel> <DockPanel Name="ButtonHost" LastChildFill="False" HorizontalAlignment="Center" > <Button Margin="10" Click="ButtonBase_OnClick" Width="70">Yes</Button> <Button Name="noBtn" Margin="10" Click="cancel_Click" Width="70">No</Button> </DockPanel> </StackPanel> </Grid> </Grid> </Border> </Window>для cs этого файла:
public partial class MessageboxNew : Window { public MessageboxNew() { InitializeComponent(); } private void ButtonBase_OnClick(object sender, RoutedEventArgs e) { DialogResult = true; } private void cancel_Click(object sender, RoutedEventArgs e) { DialogResult = false; } private void FrameworkElement_OnLoaded(object sender, RoutedEventArgs e) { this.MouseDown += delegate { DragMove(); }; } }затем создать класс, чтобы использовать это :
public class Mk_MessageBox { public static bool? Show(string title, string text) { MessageboxNew msg = new MessageboxNew { TitleBar = {Text = title}, Textbar = {Text = text} }; msg.noBtn.Focus(); return msg.ShowDialog(); } }теперь вы можете создать свое окно сообщения следующим образом:
var result = Mk_MessageBox.Show("Remove Alert", "This is gonna remove directory from host! Are you sure?"); if (result == true) { // whatever }скопируйте это в приложение.xaml внутри
<Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! --> <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" /> <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" /> <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" /> <!-- Accent and AppTheme setting --> <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" /> <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" /> <!--two new guys--> <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.LightBlue.xaml" /> <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/MaterialDesignColor.Green.xaml" /> <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Light.xaml" /> <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" /> <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.DeepPurple.xaml" /> <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/MaterialDesignColor.Lime.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources>--------------
-----------------
Моя Эталонная : https://www.red-gate.com/simple-talk/dotnet/net-development/using-c-to-create-powershell-cmdlets-the-basics/

Comments