Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 消息对话框中的文本输入?内容对话?_C#_Xaml_Dialog_Windows 10_Win Universal App - Fatal编程技术网

C# 消息对话框中的文本输入?内容对话?

C# 消息对话框中的文本输入?内容对话?,c#,xaml,dialog,windows-10,win-universal-app,C#,Xaml,Dialog,Windows 10,Win Universal App,我想知道什么是让用户在Windows10通用应用程序(忘记密码系统)的消息对话框中输入文本的最佳方式。根据我所做的研究,这似乎不可能用MessageDialog实现,但可以用ContentDialog实现。到目前为止,我已经找到了一个网站,它大致解释了如何使用ContentDialog,但没有说明如何使用文本输入,它确实显示了如何使用带有ContentDialog的文本框,但所显示的方法对我来说相当复杂 那么,有没有人知道更简单的方法,或者MSDN是最简单的方法 谢谢你的帮助 内森是的,这里有一

我想知道什么是让用户在Windows10通用应用程序(忘记密码系统)的消息对话框中输入文本的最佳方式。根据我所做的研究,这似乎不可能用MessageDialog实现,但可以用ContentDialog实现。到目前为止,我已经找到了一个网站,它大致解释了如何使用ContentDialog,但没有说明如何使用文本输入,它确实显示了如何使用带有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)
        {
        }
    }
}
<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>
对话框(代码):

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)
        {
        }
    }
}
<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>
对话框(XAML):

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

我使用此功能向用户请求文本:

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

不要使用高度=32,而是使用以下选项:

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 "";
    }
公共静态异步任务ShowAddDialogAsync(字符串标题)
{
var inputTextBox=新文本框{AcceptsReturn=false};
(inputTextBox作为框架元素)。垂直对齐=垂直对齐。底部;
var dialog=新建ContentDialog
{
内容=输入文本框,
头衔,
IsSecondaryButtoneEnabled=true,
PrimaryButtonText=“确定”,
SecondaryButtonText=“取消”
};
if(wait dialog.ShowAsync()==ContentDialogResult.Primary)
返回InputExtBox.Text;
其他的
返回“”;
}

hey@Kibernetik,这太棒了!