diff --git a/source/iNKORE.UI.WPF.Modern.Controls/Controls/InputBox/InputBox.cs b/source/iNKORE.UI.WPF.Modern.Controls/Controls/InputBox/InputBox.cs new file mode 100644 index 00000000..1ff50cc9 --- /dev/null +++ b/source/iNKORE.UI.WPF.Modern.Controls/Controls/InputBox/InputBox.cs @@ -0,0 +1,73 @@ +using System.Threading.Tasks; +using System.Windows; +using static iNKORE.UI.WPF.Modern.Controls.LocalizedDialogCommands; + +namespace iNKORE.UI.WPF.Modern.Controls +{ + public static class InputBox + { + public static async Task ShowAsync(object title, object prompt, string defaultResponse = "") + { + ContentDialog dialog = BuildDialog(title, prompt, defaultResponse); + ContentDialogResult result = await dialog.ShowAsync(); + + if (result != ContentDialogResult.Primary) + { + return string.Empty; + } + + InputBoxContent content = (InputBoxContent)dialog.Content; + string response = content.responseTextControl.Text; + return response; + } + + public static async Task ShowAsync(Window owner, object title, object prompt, string defaultResponse = "") + { + ContentDialog dialog = BuildDialog(title, prompt, defaultResponse); + ContentDialogResult result = await dialog.ShowAsync(owner); + + if (result != ContentDialogResult.Primary) + { + return string.Empty; + } + + InputBoxContent content = (InputBoxContent)dialog.Content; + string response = content.responseTextControl.Text; + return response; + } + + public static async Task ShowAsync(ContentDialogPlacement placement, object title, object prompt, string defaultResponse = "") + { + ContentDialog dialog = BuildDialog(title, prompt, defaultResponse); + ContentDialogResult result = await dialog.ShowAsync(placement); + + if (result != ContentDialogResult.Primary) + { + return string.Empty; + } + + InputBoxContent content = (InputBoxContent)dialog.Content; + string response = content.responseTextControl.Text; + return response; + } + + private static ContentDialog BuildDialog(object title, object prompt, string defaultResponse) + { + ContentDialog dialog = new() + { + PrimaryButtonText = GetString(DialogBoxCommand.IDOK), + CloseButtonText = GetString(DialogBoxCommand.IDCANCEL), + DefaultButton = ContentDialogButton.Primary + }; + + var content = new InputBoxContent(); + dialog.Content = content; + + dialog.Title = title; + content.promptTextControl.Content = prompt; + content.responseTextControl.Text = defaultResponse; + + return dialog; + } + } +} diff --git a/source/iNKORE.UI.WPF.Modern.Controls/Controls/InputBox/InputBoxContent.xaml b/source/iNKORE.UI.WPF.Modern.Controls/Controls/InputBox/InputBoxContent.xaml new file mode 100644 index 00000000..7797ce7a --- /dev/null +++ b/source/iNKORE.UI.WPF.Modern.Controls/Controls/InputBox/InputBoxContent.xaml @@ -0,0 +1,18 @@ + + + + + + diff --git a/source/iNKORE.UI.WPF.Modern.Controls/Controls/InputBox/InputBoxContent.xaml.cs b/source/iNKORE.UI.WPF.Modern.Controls/Controls/InputBox/InputBoxContent.xaml.cs new file mode 100644 index 00000000..4107f589 --- /dev/null +++ b/source/iNKORE.UI.WPF.Modern.Controls/Controls/InputBox/InputBoxContent.xaml.cs @@ -0,0 +1,22 @@ +using System.Windows; +using System.Windows.Controls; +using System.Windows.Input; + +namespace iNKORE.UI.WPF.Modern.Controls +{ + internal partial class InputBoxContent : UserControl + { + public InputBoxContent() + { + InitializeComponent(); + + Loaded += InputBoxContent_Loaded; + } + + private void InputBoxContent_Loaded(object sender, RoutedEventArgs e) + { + responseTextControl.Focus(); + Keyboard.Focus(responseTextControl); + } + } +} diff --git a/source/samples/WpfApp1/MainWindow.xaml.cs b/source/samples/WpfApp1/MainWindow.xaml.cs index cfed20f9..36bedfba 100644 --- a/source/samples/WpfApp1/MainWindow.xaml.cs +++ b/source/samples/WpfApp1/MainWindow.xaml.cs @@ -68,12 +68,13 @@ private void AppBarButton_Click(object sender, RoutedEventArgs e) //naview.SelectedItem = sgsac; } - private void ToggleButton_Click(object sender, RoutedEventArgs e) + private async void ToggleButton_Click(object sender, RoutedEventArgs e) { //AppBarToggleButton1.IsChecked = false; - AppBarToggleButton1.IsEnabled = false; + //AppBarToggleButton1.IsEnabled = false; //MicaHelper.RemoveTitleBar(this); MicaHelper.Apply(this, BackdropType.Mica, false); + await InputBox.ShowAsync("promptssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssok", "promptssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssok", "test"); } private void Button_MessageBox_Click(object sender, RoutedEventArgs e)