Hax*_*lit 35 c# data-binding wpf focus button
我有一个TextBox
和ToolBar
一个Button
.如果我正在键入,TextBox
我点击Button
我想要TextBox
丢失,Focus
所以绑定得到更新.我不想加UpdateSourceTrigger=PropertyChanged
我的TextBox
.但是当我点击Button
我重置Focus
到主窗口时,我所做的就是丢失Focus
并更新绑定.
我尝试OnClick
使用以下内容添加到按钮,但它似乎不起作用:
private void Button_Click(object sender, RoutedEventArgs e) {
FocusManager.SetFocusedElement(this, null);
}
Run Code Online (Sandbox Code Playgroud)
任何提示将不胜感激.
谢谢,劳尔
Dud*_*udu 33
我遇到了类似的问题.当按下enter时,我需要取消对焦文本框.我最终得到这个代码:
var scope = FocusManager.GetFocusScope(elem); // elem is the UIElement to unfocus
FocusManager.SetFocusedElement(scope, null); // remove logical focus
Keyboard.ClearFocus(); // remove keyboard focus
Run Code Online (Sandbox Code Playgroud)
我认为它比创建虚拟控件更清晰,它是可重用的.我对这个解决方案没有信心.但似乎运作良好.
Ray*_*rns 25
问题是工具栏将您的按钮放在不同的位置FocusManager.FocusScope
.这意味着,两个Button
和TextBox
可以在同一时间接收逻辑焦点,各自在其自身的范围.这通常是一件好事,因为当您选择菜单项和工具栏按钮时,您通常不希望在主窗口区域失去焦点,但在您的情况下,它会阻止您正在进行的工作.
虽然你可以覆盖FocusManager.IsFocusScope
工具栏上的属性并获得你想要的效果,但这可能不是最好的计划,因为它会使所有其他工具栏按钮也从主窗口区域偷走焦点.
相反,您可以使用以下几种简单解决方案之一
textBox.GetBindingExpression(TextBox.TextProperty).UpdateSource()
归档时间: |
|
查看次数: |
28228 次 |
最近记录: |