Проблема в том, что панель инструментов помещает вашу кнопку в другой FocusManager.FocusScope
. Это означает, что и Button
, и TextBox
могут получать логический фокус одновременно, каждый в своей области видимости. Обычно это хорошо, так как вы обычно не хотите терять фокус в области основного окна, когда выбираете элементы меню и кнопки панели инструментов, но в вашем случае это мешает тому, что вы делаете.
Несмотря на то, что вы можете переопределить свойство FocusManager.IsFocusScope
на панели инструментов и получить желаемый эффект, это, вероятно, не лучший план, поскольку из-за этого все остальные кнопки панели инструментов также крадут фокус из области главного окна.
Вместо этого вы можете использовать одно из нескольких простых решений:
- Поместите кнопку за пределы панели инструментов
- Добавьте элемент управления Focusable = "true" в область главного окна и сфокусируйте его при нажатии кнопки
- Принудительно обновлять вручную, вызывая
textBox.GetBindingExpression(TextBox.TextProperty).UpdateSource()
- Временно установите Focusable = "true" на элементе управления в главном окне, установите фокус на него, затем немедленно снова установите Focusable = "false"