2012-05-08 3 views
0

同じプロパティにバインドする2つのテキストボックスがあります。 1つのテキストボックスは元のテキスト用で、2番目のテキストボックスは新しいテキスト用です。私が問題を抱えているのは、最初のテキストボックスのテキストが提出されると、元のテキストが返されるということです。しかし、名前を更新するために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}"/> 

答えて

1

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

あなたは基礎となるPerson.Nameが更新されると判断し、いくつかのトリガ条件で、独立したORIGINALNAMEとこのNewName特性を有するPersonViewModelを持っている理想的cheat sheet

+0

両方のテキストボックス用です。 – Calvin

+0

いいえ、一度のみバインドしたいもの(元のもの) – Tim

1

を結合便利です。特定の名前のエントリが無効な場合は、UIレベルの検証ロジック(関連するフィードバック付き)を配置することもできます。あなたは本質的に、名前を含むプロセス(新しい/元の名前の概念で)を更新するプロセスを切り離しています。前者は名前が変更の過程にあり、後者は単に名前を持つ状態にあります。

関連する問題