如果用户点击不可集中的内容,我该如何使控制失去焦点?
题
我有一个装满了数十种物品的物品。每个项目都是绑定的文本框和几个按钮。因为我希望用户能够从文本框到文本框,所以这些按钮可集中设置为false。这很好。唯一的问题是,由于文本框不会失去焦点,因此它们的绑定不会更新源,因此按钮背后的代码无法与正确的值一起使用。
我可以想到一种解决此问题的方法,例如,将按钮的点击处理程序导航到其关联的文本框,而制造是明确更新源。但是在我看来,必须有一种更好的方法,如果我对焦点模型有更好的了解,这对我来说可能很明显。在那儿?
解决方案
由于性能是一个问题,您可能会发现 乔什·史密斯(Josh Smith)撰写的文章 有用。上下文与您的问题非常相似。 Josh通过手动触发绑定更新来解决它:
TextBox focusedTextBox = Keyboard.FocusedElement as TextBox;
if (focusedTextBox == null)
return;
BindingExpression textBindingExpr =
focusedTextBox.GetBindingExpression(TextBox.TextProperty);
if (textBindingExpr == null)
return;
textBindingExpr.UpdateSource();
其他提示
如果允许性能,您可以更改 UpdateSourceTrigger
这些文本框元素 PropertyChanged
代替 LostFocus
.
不隶属于 StackOverflow