我有一个DataGridControl,它的单元格的DataTemplate被覆盖到TextBoxs,通过单击单元格外部但仍然在DataGrid上,我希望TextBox失去键盘焦点,以便它可以提交更改,但似乎DataGrid不会处理MouseLeftButtonDown事件,因此我必须手动将处理程序添加到Grid和处理程序中:
e.Handled = true;
Keyboard.Focus( sender as UIElement );
使父母小组"可关注"。
通过使用Snoop,我注意到像TextBox,Button这样的控件能够处理MosueLeftButtonDown事件,而Panels则不能,如果设置"可聚焦"财产到"真"。有谁知道这背后的原因,谢谢。
简化情况:假设网格上有TextBox和Button:
<Grid Background="AliceBlue">
<TextBox Height="25" Margin="50" Text="abcd"/>
<Button Height="25" Margin="50,100,50,0"></Button>
</Grid>
当我单击TextBox时,它会获得KeyBoard焦点,当我单击Grid的空白区域时,我希望TextBox失去焦点,问题是Grid与TextBoxes和Buttons相比无法聚焦。
答案 0 :(得分:0)
Panel的文档显示Panel可以处理鼠标事件:
https://msdn.microsoft.com/en-us/library/system.windows.controls.panel_events(v=vs.110).aspx