2015-12-30 22 views
8

Tôi tự hỏi cách tốt nhất để cho phép người dùng nhập văn bản vào một MessageDialog trong một ứng dụng phổ dụng Windows 10. (Quên mật khẩu hệ thống) là gì. Từ nghiên cứu tôi đã làm điều này dường như không thể với một MessageDialog nhưng có thể được thực hiện với một ContentDialog. Cho đến nay tôi đã tìm thấy trang web this giải thích cách sử dụng ContentDialog, nhưng không phải với kiểu nhập văn bản và and this article on MSDN cho thấy cách sử dụng hộp văn bản với ContentDialog nhưng phương pháp hiển thị có vẻ khá phức tạp đối với tôi.Nhập văn bản trong hộp thoại tin nhắn? ContentDialog?

Vì vậy, có ai biết về bất kỳ cách đơn giản hơn để làm điều này hoặc là cách MSDN đơn giản nhất của nó sẽ nhận được?

Nhờ sự giúp đỡ

Nathan

Trả lời

13

Vâng, đây là mức tối thiểu nghiêm ngặt để đạt được những gì bạn đang tìm kiếm:

enter image description here

Trang:

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

tôi sử dụng chức năng này để yêu cầu văn bản từ người dùng:

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

và sử dụng của nó:

string text = await InputTextDialogAsync("Title"); 
+0

hey @Kibernetik, điều này thật tuyệt vời! –

Các vấn đề liên quan