我有一些文本框,我希望它们的行为与 WPF 应用程序的正常行为略有不同。基本上,我希望它们的行为更像网页上的文本框。也就是说,如果我单击文本框以外的任何地方,它将失去焦点。这样做的最佳方法是什么?
如果答案是以编程方式移除焦点,那么检测边界外的鼠标点击的最佳方法是什么?如果我点击的元素将成为焦点的新接收者怎么办?
最佳答案
与其向窗口添加新控件,我认为您应该为您的 Grid 命名并对窗口上的 MouseDown 事件使用react,将焦点移动到 < strong>Grid 本身。像这样:
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1"
Height="412" Width="569"
MouseDown="Window_MouseDown"
Name="window1">
<Grid ShowGridLines="False"
Background="#01FFFFFF"
KeyDown="Grid_KeyDown"
Name="grid1"
Focusable="True">
<TextBox Width="120" Margin="117,61,0,0"
Name="textBox1"
VerticalAlignment="Top"
HorizontalAlignment="Left"/>
</Grid>
</Window>
代码隐藏:
private void window1_MouseDown(object sender, MouseButtonEventArgs e)
{
grid1.Focus();
}
关于c# - WPF - 在文本框外部单击时移除焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6489032/