C# UWP:按钮内的文本框,如何防止空格键触发点击事件?
我想把一个文本框、一个标签和一个符号图标放进一个按钮,这样整个东西都可以点击。开始时,您只能看到标签和符号。通过单击按钮,标签被隐藏,文本框出现,您可以在其中键入一些文本。再次单击,标签会再次显示新输入的文本,文本框消失 我的问题是,通过将焦点设置为文本框,按钮(父项)似乎也会进入焦点,因为每次按下空格键时,按钮的单击事件都会触发。我不希望这种情况发生,因为文本框有焦点 XAMLC# UWP:按钮内的文本框,如何防止空格键触发点击事件?,c#,button,uwp,textbox,C#,Button,Uwp,Textbox,我想把一个文本框、一个标签和一个符号图标放进一个按钮,这样整个东西都可以点击。开始时,您只能看到标签和符号。通过单击按钮,标签被隐藏,文本框出现,您可以在其中键入一些文本。再次单击,标签会再次显示新输入的文本,文本框消失 我的问题是,通过将焦点设置为文本框,按钮(父项)似乎也会进入焦点,因为每次按下空格键时,按钮的单击事件都会触发。我不希望这种情况发生,因为文本框有焦点 XAML <Button Click="ToggleTopic" HorizontalA
<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>
我只想阻止通过空格键触发事件。返回键应触发事件
谢谢你帮助我
D.来自官方文件 如果按钮具有键盘焦点,则按Enter键或空格键也会引发单击事件。您通常无法处理按钮上的低级事件,因为它具有单击行为 如果要防止
空格键
触发单击
事件,可以像下面这样覆盖按钮的方法
public class MyButton : Button
{
protected override void OnProcessKeyboardAccelerators(ProcessKeyboardAcceleratorEventArgs args)
{
if(args.Key == VirtualKey.Space)
{
args.Handled = true;
}
base.OnProcessKeyboardAccelerators(args);
}
}
用法
<local:MyButton Click="ToggleTopic"
HorizontalAlignment="Stretch"
HorizontalContentAlignment="Stretch">
<Grid IsTapEnabled="False" >
<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>
</local:MyButton>
<local:MyButton Click="ToggleTopic"
HorizontalAlignment="Stretch"
HorizontalContentAlignment="Stretch">
<Grid IsTapEnabled="False" >
<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>
</local:MyButton>