我有两个绑定到同一属性的文本框。一个文本框用于原始文本,第二个用于新文本。我遇到的问题是,当提交第一个文本框的文本时,它会返回原始文本。但是当我输入第二个文本框来更新名称时,这会自动覆盖第一个文本框文本中的内容。我只是想知道是否有任何阻止这个,所以我将显示原始和新文本。
<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}"/>
答案 0 :(得分:1)
对txtOriginalName尝试Text="{Binding Path=Person.Name, Mode=OneTime}"
,然后将txtOriginalName初始化为Person.Name中的值,但是当Person.Name稍后更改时不会更新。
这是一个有用的绑定cheat sheet
答案 1 :(得分:1)
理想情况下,您有一个具有单独的OriginalName和NewName属性的PersonViewModel,以及一些确定何时更新基础Person.Name的触发条件。如果某些名称条目无效,这还允许您放置UI级验证逻辑(带有相关反馈)。您实际上是在从包含Name的过程中解除更新Name(具有New / Original名称的概念)的过程。前者可以处于名称正在变化的状态,而后者只是名称。