Text input in message dialog? ContentDialog?

后端 未结 3 2042
说谎
说谎 2021-02-13 19:17

I am wondering what is the best way to allow a user to input text into a MessageDialog in a Windows 10 universal app.(Forgot password system). From the research I\'ve done this

相关标签:
3条回答
  • 2021-02-13 19:57

    I use such function to request text from user:

    private async Task<string> InputTextDialogAsync(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 "";
    }
    

    and its usage:

    string text = await InputTextDialogAsync("Title");
    
    0 讨论(0)
  • 2021-02-13 20:19

    Instead of Height=32, use this:

    public static async Task<string> ShowAddDialogAsync(string title)
        {
            var inputTextBox = new TextBox { AcceptsReturn = false };
            (inputTextBox as FrameworkElement).VerticalAlignment = VerticalAlignment.Bottom;
            var dialog = new ContentDialog
            {
                Content = inputTextBox,
                Title = title,
                IsSecondaryButtonEnabled = true,
                PrimaryButtonText = "Ok",
                SecondaryButtonText = "Cancel"
            };
            if (await dialog.ShowAsync() == ContentDialogResult.Primary)
                return inputTextBox.Text;
            else
                return "";
        }
    
    0 讨论(0)
  • 2021-02-13 20:24

    Yes, here's the strict minimum to achieve what you're looking for :

    Page :

    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;
                }
            }
        }
    }
    

    Dialog (code) :

    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)
            {
            }
        }
    }
    

    Dialog (XAML) :

    <ContentDialog x:Class="App1.ContentDialog1"
                   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:local="using:App1"
                   xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                   x:Name="ContentDialog"
                   Title="TITLE"
                   PrimaryButtonClick="ContentDialog_PrimaryButtonClick"
                   PrimaryButtonText="Button1"
                   SecondaryButtonClick="ContentDialog_SecondaryButtonClick"
                   SecondaryButtonText="Button2"
                   mc:Ignorable="d">
    
        <Grid>
            <TextBox Text="{Binding ElementName=ContentDialog, Path=Text, Mode=TwoWay}" />
        </Grid>
    </ContentDialog>
    
    0 讨论(0)
提交回复
热议问题