Не могли бы вы расширить WPF TextBox, а затем использовать его для всех ваших текстовых полей?Тогда у вас могут быть некоторые переопределенные события, чтобы определить, как вы были сфокусированы, или сделать изменения границ.
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
}
}