以编程方式单击ContentDialog的PrimaryButton

时间:2018-05-06 20:14:21

标签: c# uwp

在UWP中,当文本框的KeyDown事件检测到Enter已被按下时,如何以编程方式单击ContentDialog的PrimaryButton?只是尝试添加键盘快捷键以接受答案在文本框中并通过键盘关闭对话框,无需移动鼠标并单击“确定”。

private void A1TextBox_KeyDown(object sender, KeyRoutedEventArgs e)
{
    if (e.Key == Windows.System.VirtualKey.Enter)
    {
        // Programmatically Click PrimaryButton Here        
    }
}

<ContentDialog
    x:Class="App1.ContentDialog1"
    Title="DialogBox"
    Loaded="ContentDialog_Loaded"
    PrimaryButtonText="Ok"
    SecondaryButtonText="Cancel"
    PrimaryButtonClick="ContentDialog_PrimaryButtonClick"
    SecondaryButtonClick="ContentDialog_SecondaryButtonClick">

<Grid Name="A1Grid">
    <Grid.RowDefinitions>
        <RowDefinition Height="auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <TextBox Name="A1TextBox" Grid.Row="0" 
        PlaceholderText="Search String" 
        TextChanged="A1TextBox_TextChanged" 
        KeyDown="A1TextBox_KeyDown"/>
    <ScrollViewer Grid.Row="1" 
         ScrollViewer.VerticalScrollBarVisibility="Auto"
         VerticalAlignment="Stretch">
        <ListBox Name="A1ListBox" MinHeight="200"/>
    </ScrollViewer>
</Grid>
</ContentDialog>

3 个答案:

答案 0 :(得分:2)

您是否尝试过制作想要点击&#34; AcceptButton&#34;的按钮?

//This goes in the form loading method
this.AcceptButton = PrimaryButton;

这应该将按钮变为蓝色,当在表单上按Enter键将导致调用click函数.project

编辑:刚刚注意到这不是winforms。

this.DefaultButton = PrimaryButton;

谢谢Bill!

答案 1 :(得分:2)

使用以下代码:

RoutedEventArgs f;

private void A1TextBox_KeyDown(object sender, KeyRoutedEventArgs e)
{
    if (e.Key == Windows.System.VirtualKey.Enter)
    {
        ContentDialog_PrimaryButtonClick (Sender, f);       
    }
}

他将触发PrimaryButtonClick事件。

答案 2 :(得分:0)

UWP ContentDialog文档声明:

&#34;您可以选择将三个按钮中的一个区分为对话框的默认按钮。使用 DefaultButton 属性区分其中一个按钮。 此按钮将接收Accent Button视觉处理,自动响应ENTER键,并在打开Dialog时获得焦点,除非对话框的内容包含可聚焦元素。&#34;

按如下方式更改ContentDialog:

<ContentDialog … DefaultButton="Primary">