0

同じプロパティにバインドする2つのテキストボックスがあります。1つのテキストボックスは元のテキスト用で、もう1つは新しいテキスト用です。私が問題にしているのは、最初のテキストボックスのテキストが送信されると、元のテキストが返されるということです。ただし、2番目のテキストボックスに入力して名前を更新すると、最初のテキストボックスのテキストの内容が自動的に上書きされます。とにかくこれを止める方法があるのだろうかと思っていたので、元のテキストと新しいテキストを表示します。

    <TextBox Name="txtOriginalName" 
             HorizontalAlignment="Right" VerticalAlignment="Top" 
             Width="524" Height="auto" TextWrapping="Wrap"  
             AcceptsReturn="True" HorizontalScrollBarVisibility="Auto" 
             Text="{Binding Path=Person.Name}"/>

   <TextBox Name="txtNewName" 
            HorizontalAlignment="Right" VerticalAlignment="Top" 
            Width="524" Height="auto" TextWrapping="Wrap" AcceptsReturn="True" 
            HorizontalScrollBarVisibility="Auto" 
            Text="{Binding Path=Person.Name}"/>
4

2 に答える 2

1

txtOriginalNameを試しText="{Binding Path=Person.Name, Mode=OneTime}"てみると、txtOriginalNameはPerson.Nameの値に初期化されますが、後でPerson.Nameが変更されても更新されません。

これが便利なバインディングチートシートです

于 2012-05-08T17:47:47.943 に答える
1

理想的には、個別の OriginalName および NewName プロパティを持つ PersonViewModel があり、基になる Person.Name がいつ更新されるかを決定するいくつかのトリガー条件があります。これにより、特定の名前エントリが無効な場合に、UI レベルの検証ロジック (関連するフィードバックを含む) を配置することもできます。基本的に、名前を含むプロセスから名前を更新するプロセスを (新しい/元の名前の概念で) 分離しています。前者は名前が変化している状態であるのに対し、後者は単に名前を持っているだけです。

于 2012-05-08T18:58:47.460 に答える