数据绑定是如何使用的

本文关键字:何使用 数据绑定 | 更新日期: 2023-09-27 18:25:00

我在几个例子中看到了数据绑定,我理解其中的部分内容,但我不知道什么时候使用mode=twoway和mode=oneway?

<TextBlock x:Name="Item" Text="{Binding Path=Name, Mode=OneWay}" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center" />
<TextBox x:Name="Count" Text="{Binding Path=Count, Mode=TwoWay}" Grid.Column="1" TextAlignment="Center" InputScope="Number"/>

数据绑定是如何使用的

来自MSDN

  • 每当目标属性或源属性发生更改时,TwoWay都会更新目标属性或属性。

  • OneWay仅在源属性更改时更新目标属性。

  • OneTime仅在应用程序启动或DataContext发生更改时更新目标属性。

  • OneWayToSource在目标属性更改时更新源属性。Default将使用目标属性的默认Mode值。

如果希望更改在源和目标(ViewModel和View)之间来回传播,请使用TwoWay;如果不希望目标中的更改更新源,请使用OneWay。

数据绑定基本上只是一种自动的方式,使来自两个属性(通常来自不同对象)的两个值同步,因此当其中一个发生变化时,另一方也会发生变化。在WPF中,绑定有一个,其中数据来自(通常是表单的数据上下文,但也可以由ElementNameSourceRelativeSource指定)和目标(设置的属性,Binding在XAML中写入(或由代码设置)。

Mode属性只是设置哪一方更改另一方。

  • CCD_ 6双方相互更新
  • OneWay源更新目标,但目标中的更改不会影响源
  • OneWayToSource正好相反,目标更新源,但更改源不会修改目标
  • OneTime值只复制一次,通常是在设置datacontext时,然后不再更新

在每种情况下使用的选择都是针对特定需求的。需要考虑的重要问题是,如果你改变了一方,会发生什么,这种改变会传播到另一方吗?

例如,如果将TextBoxText绑定到代码中的属性,通常您会希望使用TwoWay,因为当用户键入您希望更新的数据时,以及当您以程序方式更改数据时,您也希望显示更新。但是,如果要绑定TextBlock,那么OneWay就足够了,因为用户不能在那里进行写入,也不需要传播任何内容。