У меня есть tabItems с TextBox в заголовках. Я использую события LostFocus и MouseDoubleClick, чтобы установить текст в TextBox.
<TabControl>
<TabItem Width="50">
<TabItem.Header>
<TextBox Text="text" IsReadOnly="True" LostFocus="TextBox_LostFocus" MouseDoubleClick="TextBox_MouseDoubleClick"/>
</TabItem.Header>
</TabItem>
</TabControl>
private void TextBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
TextBox text_box = sender as TextBox;
if (text_box == null) { return; }
text_box.IsReadOnly = false;
text_box.SelectAll();
}
private void TextBox_LostFocus(object sender, RoutedEventArgs e)
{
TextBox text_box = sender as TextBox;
if (text_box == null) { return; }
text_box.IsReadOnly = true;
}
Событие LostFocus происходит, если вы нажимаете только область заголовка TabItem за пределами TextBox или на другом TabItem. Щелчок по области содержимого элемента вкладки не вызывает событие потери фокуса.
Как заставить TextBox терять фокус, когда пользователь щелкает любую область за пределами TextBox?