2015-12-30 5 views
8

私は、Windows 10の普遍的なアプリでユーザーがMessageDialogにテキストを入力できるようにする最良の方法は何かを考えています。私が行った研究から、これはMessageDialogでは可能ではないようですが、ContentDialogを使って達成することができます。これまで私はthisのContentDialogの使い方を説明していましたが、テキスト入力ではなく、and this article on MSDNのContentDialogでテキストボックスを使用する方法を説明していますが、表示されたメソッドはかなり複雑です。メッセージダイアログのテキスト入力? ContentDialog?

だから誰もこれを行うもっと単純な方法を知っているのですか、それともMSDNの方が簡単なのですか?任意の助け

おかげ

ネイサン

答えて

13

はい、ここにあなたが探しているものを達成するための厳格な最低限だ:

enter image description here

ページ:

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

<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

Iは、ユーザからテキストを要求するような機能を使用する:

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

及びその使用方法:

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

こんにちは@Kibernetik、これは最高です! –