如何确定是什么导致了WPF文本框的GotFocus事件-鼠标单击或TAB键?
如何确定是什么导致了WPF文本框的GotFocus事件-鼠标单击或TAB键?如何确定是什么导致了WPF文本框的GotFocus事件-鼠标单击或TAB键?,wpf,textbox,focus,mouse,tabs,Wpf,Textbox,Focus,Mouse,Tabs,如何确定是什么导致了WPF文本框的GotFocus事件-鼠标单击或TAB键? 如果使用TAB键设置焦点,我需要更改边框颜色;如果使用鼠标单击设置焦点,我需要保留边框的标准颜色。因此,我需要从事件参数中提取导致事件的原因,或者(更好)写入触发器以将其转换为文本框样式。我建议使用OnKeyUp和OnMouseUp事件而不是GotFocus事件来确定这一点。在OnKeyUp中,您需要测试(请参阅Eventargs)按下的是Tab键。是否可以扩展WPF文本框,然后将其用于所有文本框?然后,您可以有一些被
如果使用TAB键设置焦点,我需要更改边框颜色;如果使用鼠标单击设置焦点,我需要保留边框的标准颜色。因此,我需要从事件参数中提取导致事件的原因,或者(更好)写入触发器以将其转换为文本框样式。我建议使用OnKeyUp和OnMouseUp事件而不是GotFocus事件来确定这一点。在OnKeyUp中,您需要测试(请参阅Eventargs)按下的是Tab键。是否可以扩展WPF文本框,然后将其用于所有文本框?然后,您可以有一些被覆盖的事件来确定您是如何聚焦的,或者进行边界更改
class MySpecialTextBox : TextBox
{
protected override void OnIsKeyboardFocusWithinChanged(System.Windows.DependencyPropertyChangedEventArgs e)
{
// Focused by keyboard
}
protected override void OnMouseUp(System.Windows.Input.MouseButtonEventArgs e)
{
// Focused by mouse
}
protected override void OnIsMouseCaptureWithinChanged(System.Windows.DependencyPropertyChangedEventArgs e)
{
// Focused by mouse
}
}
是的,我可以,但对我来说,最好使用样式触发器,因为我想让它成为样式的一部分。可能吗?问题是,我想创建一个ExpressionLight样式的副本,它更像expression light的真实样式,而不是WPFToolkit中的样式。