在 WPF 中使用数据绑定(bind)时,如果将 Mode
属性设置为 TwoWay
,则可以通过设置 UpdateSourceTrigger< 来控制更新源属性的时刻
属性。对于目标 -> 源更新流来说,这种情况是可能的。但是如何控制源 -> 目标更新流的相同内容呢?我找不到同等的属性(property)。
例如,假设我的窗口上有两个文本框,并且我想绑定(bind)这两个文本框的 Text 属性。 XAML 可能如下所示:
<TextBox
Name="txt1"
Text="{Binding ElementName=txt2, Path=Text, Mode=TwoWay,
UpdateSourceTrigger=LostFocus}"
/>
<TextBox
Name="txt2"
/>
当用户在txt1
文本框中输入文本时,txt2
文本框的Text
属性将更新为Text
属性更改,就像我在 txt1
上实现 TextChanged 事件一样。
但是,当用户在txt2
文本框中输入文本时,txt1
文本框的Text
属性将在txt2
之后更新> TextBox 失去焦点,因为 UpdateSourceTrigger
属性设置为 LostFocus
,就像我实现了 LostFocus 事件一样。
在源属性控件失去焦点后,WPF 数据绑定(bind)是否有可能更新目标属性?在我们的示例中:应该对上面的 XAML 代码执行什么操作,以便仅在 txt1
TextBox 失去焦点后更新 txt2
TextBox 的 Text
属性,而不是在其 Text 属性更改后?
谢谢!
最佳答案
为什么不定义两个绑定(bind)?这对我有用:
<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>
关于wpf - 如何在wpf中的单向数据绑定(bind)中控制 "update trigger"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29020510/