UWP:Button 内的TextBox,如何防止SpaceBar 触发Click 事件?

我想将一个 TextBox、一个 Label 和一个 SymbolIcon 放入一个按钮中,这样整个东西都是可点击的。一开始你只能看到标签和符号。通过单击按钮,标签将隐藏并出现文本框,您可以在其中键入一些文本。通过再次单击,标签再次出现,并带有新输入的文本,而 TextBox 消失。


我的问题是,通过将焦点设置到 TextBox,按钮(父级)似乎也进入了焦点,因为每次按下空格键时,按钮的 Click 事件都会触发。我不希望这种情况发生,而 TextBox 具有焦点。


XAML


    <Button Click="ToggleTopic"

            HorizontalAlignment="Stretch"

            HorizontalContentAlignment="Stretch">

        <Grid>                                            

            <TextBlock x:Name="textBlockInfoTopic" 

                       Text=""

                       HorizontalAlignment="Left"

                       Margin="100,0,100,0"/>

            <TextBox x:Name="textBoxTopic" 

                     PlaceholderText="enter Topic..."

                     HorizontalAlignment="Stretch"

                     Margin="100,0,100,0"

                     Visibility="Collapsed"/>


            <SymbolIcon x:Name="symbolTopicButton" 

                        Symbol="Add"

                        HorizontalAlignment="Right"/>

        </Grid>

    </Button>

C#


private void ToggleTopic(object sender, RoutedEventArgs e)

        {

            if (textBoxTopic.Visibility == Visibility.Visible)

            {

                //non edit mode

                textBoxTopic.Visibility = Visibility.Collapsed;

                textBlockInfoTopic.Visibility = Visibility.Visible;

                symbolTopicButton.Symbol = Symbol.Add;

                textBlockInfoTopic.Text = textBoxTopic.Text;

            }

            else

            {

                //edit mode

                textBoxTopic.Visibility = Visibility.Visible;

                textBoxTopic.Focus(FocusState.Programmatic);

                textBlockInfoTopic.Visibility = Visibility.Collapsed;

                symbolTopicButton.Symbol = Symbol.Go;

                textBlockInfoTopic.Text = "";

            } 

        }

我只想防止通过空格键触发事件。返回键应触发事件。


米脂
浏览 168回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP