我有一个装满了数十种物品的物品。每个项目都是绑定的文本框和几个按钮。因为我希望用户能够从文本框到文本框,所以这些按钮可集中设置为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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top