2

数十のアイテムで満たされたItemsControlがあります。各アイテムは、バインドされたテキストボックスといくつかのボタンです。ユーザーがテキストボックスからテキストボックスにタブ移動できるようにしたいので、ボタンのFocusableはFalseに設定されています。これは問題なく機能します。唯一の問題は、テキストボックスがフォーカスを失っていないため、それらのバインディングがソースを更新していないため、ボタンの背後にあるコードが正しい値で機能していないことです。

これを修正する方法を考えることができます。たとえば、ボタンのクリックハンドラーを使用して、論理ツリーを介して関連するテキストボックスに移動し、ソースを明示的にバインド更新します。しかし、それよりも優れた方法が必要であるように思われます。フォーカスモデルをよりよく理解していれば、それはおそらく私には明らかでしょう。ある?

4

2 に答える 2

1

UpdateSourceTriggerパフォーマンスが許せば、これらのTextBox要素のを。PropertyChangedの代わりに変更できますLostFocus

于 2010-02-19T21:01:50.607 に答える
1

パフォーマンスが問題になるので、 JoshSmithが書いた記事が役立つかもしれません。コンテキストはあなたの問題と非常に似ています。Joshは、バインディングの更新を手動でトリガーすることでこれを解決します。

    TextBox focusedTextBox = Keyboard.FocusedElement as TextBox;
    if (focusedTextBox == null)
        return;

    BindingExpression textBindingExpr = 
      focusedTextBox.GetBindingExpression(TextBox.TextProperty);
    if (textBindingExpr == null)
        return;

    textBindingExpr.UpdateSource();
于 2010-02-20T09:13:51.423 に答える