У меня есть a TextBox
и a ToolBar
с a Button
. Если я ввожу TextBox
и я нажимаю Button
Я хочу TextBox
проиграть Focus
таким образом, привязка обновляется. Я не хочу добавлять a UpdateSourceTrigger=PropertyChanged
к моему TextBox
. Но вместо этого когда я нажимаю Button
Я сбросил Focus
к главному окну поэтому то, что когда-либо я иду, проигрывает Focus
и обновляет привязку.
Я попытался добавить a OnClick
к кнопке со следующим, но это, кажется, не работает:
private void Button_Click(object sender, RoutedEventArgs e) {
FocusManager.SetFocusedElement(this, null);
}
Любые подсказки ценились бы.
Спасибо, Raul
Проблема в том, что панель инструментов помещает Вашу кнопку в другой FocusManager.FocusScope
. Это означает, что и кнопка Button
, и текстовая панель TextBox
могут одновременно получать логическую фокусировку, каждая в своей области действия. Обычно это хорошо, так как обычно Вы не хотите потерять фокус в области главного окна при выборе пунктов меню и кнопок панели инструментов, но в Вашем случае это мешает тому, что Вы делаете.
Хотя вы можете переопределить свойство FocusManager.IsFocusScope
на панели инструментов и получить желаемый эффект, это, вероятно, не самый лучший план, так как это заставит все остальные кнопки панели инструментов также украсть фокус из области главного окна.
Вместо этого вы можете использовать одно из нескольких простых решений:
. GetBindingExpression(TextBox.TextProperty).UpdateSource()