Wpf 关于文本框的问题

Wpf 关于文本框的问题,wpf,data-binding,Wpf,Data Binding,我有两个绑定到同一属性的文本框。一个文本框用于原始文本,第二个文本框用于新文本。我遇到的问题是,当第一个文本框的文本被提交时,它返回原始文本。但是当我输入第二个文本框来更新名称时,这会自动覆盖第一个文本框中的内容。我只是想知道是否有任何方法可以阻止它,这样我就可以显示原始文本和新文本 <TextBox Name="txtOriginalName" HorizontalAlignment="Right" VerticalAlignment="Top"

我有两个绑定到同一属性的文本框。一个文本框用于原始文本,第二个文本框用于新文本。我遇到的问题是,当第一个文本框的文本被提交时,它返回原始文本。但是当我输入第二个文本框来更新名称时,这会自动覆盖第一个文本框中的内容。我只是想知道是否有任何方法可以阻止它,这样我就可以显示原始文本和新文本

    <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}"/>

尝试
Text=“{Binding Path=Person.Name,Mode=OneTime}”
对于txtOriginalName,则txtOriginalName将初始化为Person.Name中的值,但在Person.Name稍后更改时不会更新


下面是一个有用的绑定

理想情况下,您有一个PersonViewModel,它具有单独的OriginalName和NewName属性,并带有一些触发条件,用于确定基础Person.Name的更新时间。如果某些名称条目无效,这还允许您放置UI级验证逻辑(以及相关的反馈)。从本质上讲,您将更新名称(使用新/原始名称的概念)的过程与包含名称的过程分离。前者可能处于名称正在更改的状态,而后者只是有一个名称。

否,仅适用于只想绑定一次的名称(“原始”名称)