数据绑定是如何使用的
本文关键字:何使用 数据绑定 | 更新日期: 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中,绑定有一个源,其中数据来自(通常是表单的数据上下文,但也可以由ElementName
、Source
或RelativeSource
指定)和目标(设置的属性,Binding
在XAML中写入(或由代码设置)。
Mode
属性只是设置哪一方更改另一方。
- CCD_ 6双方相互更新
OneWay
源更新目标,但目标中的更改不会影响源OneWayToSource
正好相反,目标更新源,但更改源不会修改目标OneTime
值只复制一次,通常是在设置datacontext时,然后不再更新
在每种情况下使用的选择都是针对特定需求的。需要考虑的重要问题是,如果你改变了一方,会发生什么,这种改变会传播到另一方吗?
例如,如果将TextBox
的Text
绑定到代码中的属性,通常您会希望使用TwoWay
,因为当用户键入您希望更新的数据时,以及当您以程序方式更改数据时,您也希望显示更新。但是,如果要绑定TextBlock
,那么OneWay
就足够了,因为用户不能在那里进行写入,也不需要传播任何内容。