У меня есть окно с двумя основными областями. Один из них — TextBox внутри ScrollViewer, а другой — TabControl. Я хочу иметь красную рамку вокруг части, которая в данный момент находится в фокусе, поэтому я написал следующий код для этого.
Xaml
<ScrollViewer BorderBrush="Red"
BorderThickness="0"
GotFocus="Border_GotFocus"
LostFocus="Border_LostFocus">
<TextBox/>
</ScrollViewer>
<TabControl BorderBrush="Red"
BorderThickness="0"
GotFocus="Border_GotFocus"
LostFocus="Border_LostFocus">
</TabControl>
Код
private void Border_LostFocus(object sender, RoutedEventArgs e)
{
var control = sender as Control;
if (control != null)
{
control.BorderThickness = new Thickness(0);
}
}
private void Border_GotFocus(object sender, RoutedEventArgs e)
{
var control = sender as Control;
if (control != null)
{
control.BorderThickness = new Thickness(2);
}
}
Проблема в том, что если я нажму на TextBox, он не обновит границу вокруг ScrollViewer. Если я нажимаю на вкладку в TabControl, она обновляет границу, чтобы я мог видеть границу, но не «удалял» ее, когда я нажимал в другом месте. Есть ли лучший способ сделать это?
