我想知道什么是允许用户在Windows 10通用应用程序中将文本输入到MessageDialog的最佳方式.(忘记密码系统).从我已经完成的研究来看,使用MessageDialog似乎不太可能,但可以使用ContentDialog完成.到目前为止,我发现这个网站大致解释了如何使用ContentDialog,但没有解释文本输入,以及MSDN上的这篇文章确实展示了如何使用带有ContentDialog的文本框,但显示的方法对我来说似乎相当复杂.
那么,有没有人知道这样做的更简单的方法,还是MSDN最简单的方式?
谢谢你的帮助
弥敦道
是的,这是达到您所需要的最低限度:
页面:
using System; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; namespace App1 { public sealed partial class MainPage { public MainPage() { InitializeComponent(); Loaded += MainPage_Loaded; } private async void MainPage_Loaded(object sender, RoutedEventArgs e) { var dialog1 = new ContentDialog1(); var result = await dialog1.ShowAsync(); if (result == ContentDialogResult.Primary) { var text = dialog1.Text; } } } }
对话(代码):
using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; namespace App1 { public sealed partial class ContentDialog1 : ContentDialog { public static readonly DependencyProperty TextProperty = DependencyProperty.Register( "Text", typeof (string), typeof (ContentDialog1), new PropertyMetadata(default(string))); public ContentDialog1() { InitializeComponent(); } public string Text { get { return (string) GetValue(TextProperty); } set { SetValue(TextProperty, value); } } private void ContentDialog_PrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args) { } private void ContentDialog_SecondaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args) { } } }
对话框(XAML):
我使用这样的函数来向用户请求文本:
private async TaskInputTextDialogAsync(string title) { TextBox inputTextBox = new TextBox(); inputTextBox.AcceptsReturn = false; inputTextBox.Height = 32; ContentDialog dialog = new ContentDialog(); dialog.Content = inputTextBox; dialog.Title = title; dialog.IsSecondaryButtonEnabled = true; dialog.PrimaryButtonText = "Ok"; dialog.SecondaryButtonText = "Cancel"; if (await dialog.ShowAsync() == ContentDialogResult.Primary) return inputTextBox.Text; else return ""; }
及其用法:
string text = await InputTextDialogAsync("Title");