WPF에도 MessageBox가 있습니까?
WPF에 WinForms와 같은 표준 메시지 상자가 있습니까 System.Windows.Forms.MessageBox.Show()
, 아니면 WinForms 메시지 상자를 사용해야합니까?
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();
}
자세한 내용 은 WPF의 MessageBox를 방문하십시오 .
MessageBox
WPF에서 WinForms ' 에 해당하는 것을 이라고 System.Windows.MessageBox
합니다.
WPF에는 다음과 같은 MessageBox가 포함되어 있습니다.
if (MessageBox.Show("Do you want to Save?", "Confirm",
MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
}
확장 WPF 툴킷의 MessageBox는 매우 훌륭합니다. 툴킷 DLL을 참조한 후 Microsoft.Windows.Controls.MessageBox에 있습니다. 물론 이것은 2011 년 8 월 9 일에 릴리스되었으므로 원래 옵션이 아니었을 것입니다. 주변의 모든 사람들을 위해 Github 에서 찾을 수 있습니다 .
다른 사람들이 말했듯 MessageBox
이 WPF 네임 스페이스에는 ( System.Windows
)이 있습니다.
문제는과 똑같은 메시지 박스 점이다 OK, Cancel등 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>
이 파일의 CSS의 경우 :
public partial class MessageboxNew : Window
{
public MessageboxNew()
{
InitializeComponent();
//second time show error solved
if (Application.Current == null) new Application();
Application.Current.ShutdownMode = ShutdownMode.OnExplicitShutdown;
}
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
}
이것을 App.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>
-------------- -----------------
논리를 위해 어떻게 내 자신의 메시지 상자를 만들 수 있습니까
참고 URL : https://stackoverflow.com/questions/3830228/is-there-a-messagebox-equivalent-in-wpf
'development' 카테고리의 다른 글
gdb에서 긴 문자열의 전체 값을 어떻게 인쇄합니까? (0) | 2020.02.29 |
---|---|
리눅스 / 유닉스 프로세스의 최대 메모리 사용량 (0) | 2020.02.29 |
팬더 데이터 프레임의 인덱스를 열로 변환하는 방법은 무엇입니까? (0) | 2020.02.29 |
텍스트 입력 필드를위한 CSS 선택기? (0) | 2020.02.29 |
두 줄을 어떻게 연결할 수 있습니까? (0) | 2020.02.29 |