2

WPF でデータバインディングを使用する場合、ModeプロパティをTwoWayに設定すると、プロパティを設定することでソース プロパティが更新されるタイミングを制御できUpdateSourceTriggerます。そのシナリオは、ターゲット -> ソース更新ストリームで可能です。しかし、ソース -> ターゲット更新ストリームに対して同じことをどのように制御できますか? 同等のプロパティが見つかりません。

たとえば、ウィンドウに 2 つのテキスト ボックスがあり、両方のテキスト ボックスの Text プロパティをバインドしたいとします。XAML は次のようになります。

        <TextBox
            Name="txt1"
            Text="{Binding ElementName=txt2, Path=Text, Mode=TwoWay,
            UpdateSourceTrigger=LostFocus}"
            />
        <TextBox
            Name="txt2"
            />

ユーザーがtxt1TextBoxにテキストを入力すると、TextChanged イベントを に実装した場合と同様に、Textbox のプロパティがプロパティTextの変更txt2として更新されます。Texttxt1

ただし、LostFocus イベントを実装した場合、ユーザーがtxt2TextBox にテキストを入力すると、プロパティが に設定されているため、TextBox がフォーカスを失った後Textに Textbox のプロパティtxt1が更新されます。txt2UpdateSourceTriggerLostFocus

ソースプロパティコントロールがフォーカスを失った後にターゲットプロパティを更新するWPFデータバインディングの可能性はありますか? この例では、上記の XAML コードに対して何を行う必要があるので、TextBoxTextのプロパティはtxt2TextBox がフォーカスを失った後にのみ更新されtxt1、Text プロパティが変更された後では更新されませんか?

ありがとう!

4

2 に答える 2

1

2 つのバインディングを定義しないのはなぜですか? これは私のために働く:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <StackPanel>
        <TextBox Name="txt1" Margin="4" 
                 Text="{Binding ElementName=txt2, Path=Text, Mode=OneWay}" />
        <TextBox Name="txt2" Margin="4" 
                 Text="{Binding ElementName=txt1, Path=Text, Mode=OneWay}" />
    </StackPanel>
</Window>
于 2015-03-12T22:49:17.700 に答える