Text プロパティがデータ ソースにバインドされた WPF TextBox があります。また、最初のボックスに何も入力されていないときに 2 番目のボックスを無効にするために、2 番目の TextBox の IsEnabled プロパティを最初の Text.Length プロパティにバインドしています。問題は、プロパティが変更されたときにテキスト ソースを更新することですが、IsEnabled はフォーカスが失われたときにのみ更新する必要がありますが、テキストに対して適切に定義できる UpdateSourceTrigger は 1 つだけです。
これを回避する 1 つの方法は、前のテキスト ボックスのフォーカスが失われたイベントでテキスト ボックスを手動で有効または無効にすることです。ただし、これらのテキスト ボックスが多数あり、それぞれの IsEnabled が前のボックスの Text プロパティにバインドされているため、これは面倒です。Xamlでこれを行うためのよりクリーンな方法があるかどうか疑問に思っていました。
<TextBox Name="box1" Text="{Binding textSource1, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
<TextBox Name="box2" IsEnabled="{Binding ElementName=box1, Path=Text.Length}" Text="{Binding textSource2, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
ここでは、box1 がフォーカスを失ったときに box2 の IsEnabled プロパティを更新し、box1 の Text プロパティが変更されたときに textSource1 を更新します。