WPF程序设计指南第23章数据绑定第一个例子,我修改了下,更能直接看出效果和区别
2011-07-06 16:17
281 查看
图像1
图像2
修改后的代码如下:
<StackPanel xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ScrollBar Name="scroll"
Orientation="Horizontal" Margin="24"
Maximum="100" LargeChange="10" SmallChange="1" Height="30" Width="200" />
<Label Name="label" HorizontalAlignment="Center"
Content="{Binding ElementName=scroll,Path=Value,Mode=TwoWay}"/>
<ScrollBar Name="scroll2" Orientation="Horizontal" Margin="48"
Maximum="100" LargeChange="10" SmallChange="5" Width="200"
Value="{Binding ElementName=label,Path=Content,Mode=TwoWay}"/>
<Label Name="label2" HorizontalAlignment="Center"
Content="{Binding ElementName=scroll2,Path=Value,Mode=TwoWay}"/>
</StackPanel>
将此文件保存为后缀名为.xaml的文件然后直接用浏览器打开就可以了
两个滚动条可以互相关联,如果把lable1中的Mode=TwoWay改为Mode=OneWay就不行了
这个例子主要说明简单的绑定和绑定模式的问题,新人能很直接的从这个例子中理解绑定的概念
还有一个奇怪的现象,如图片2所示,如果拿鼠标拖动滚动的话,发现这个滚动条的精度非常的高
是一个浮点的值,这个还需要再确认下,理论上这个值应该是一个整形值的。
还请路过的高人指点。
下面从MSDN摘录下绑定的Mode说明
成员名称 | 说明 | |
---|---|---|
TwoWay | 导致对源属性或目标属性的更改可自动更新对方。此绑定类型适用于可编辑窗体或其他完全交互式 UI 方案。 | |
OneWay | 当绑定源(源)更改时,更新绑定目标(目标)属性。如果要绑定的控件为隐式只读控件,则适用此绑定类型。例如,可以绑定到如股市代号之类的源。或者,可能目标属性没有用于进行更改(例如表的数据绑定背景色)的控件接口。如果不需要监视目标属性的更改,则使用 OneWay 绑定模式可避免 TwoWay 绑定模式的系统开销。 | |
OneTime | 当应用程序启动或数据上下文更改时,更新绑定目标。此绑定类型适用于以下情况:使用当前状态的快照适合使用的或数据状态实际为静态的数据。如果要从源属性初始化具有某个值的目标属性,并且事先不知道数据上下文,则也可以使用此绑定类型。实质上,这是 OneWay 绑定的较简单的形式,它在不更改源值的情况下可提供更好的性能。 | |
OneWayToSource | 当目标属性更改时更新源属性。 | |
Default | 使用绑定目标的默认 Mode 值。每个依赖项属性的默认值都不同。一般情况下,用户可编辑控件属性(例如文本框和复选框的属性)默认为双向绑定,而多数其他属性默认为单向绑定。确定依赖项属性绑定在默认情况下是单向还是双向的编程方法是:使用 GetMetadata 来获取属性的属性元数据,然后检查 BindsTwoWayByDefault 属性的布尔值。 |
示例
此示例演示如何指定绑定是仅更新绑定目标(目标)属性或绑定源(源)属性,还是同时更新目标属性和源属性。使用 Mode 属性指定绑定的方向。以下枚举列表列出了可供绑定更新的选项:
无论是目标属性还是源属性,只要发生了更改,TwoWay 就会更新目标属性或源属性。
OneWay 仅当源属性发生更改时更新目标属性。
OneTime 仅当应用程序启动时或 DataContext 进行更改时更新目标属性。
OneWayToSource 在目标属性更改时更新源属性。
Default:使用目标属性的默认 Mode 值。
有关更多信息,请参见 BindingMode 枚举。
下面的示例演示如何设置 Mode 属性。有关完整示例,请参见控制数据流方向和计时的示例。
XAML | 复制代码 |
---|---|
<TextBlock Name="IncomeText" Grid.Row="0" Grid.Column="1" Text="{Binding Path=TotalIncome, Mode=OneTime}"/> |
对于 TwoWay 或 OneWayToSource 绑定,可以通过设置 UpdateSourceTrigger 属性来控制源更新计时。有关更多信息,请参见 UpdateSourceTrigger。
相关文章推荐
- WPF程序设计指南中的一个计算你至今活了多少年多少月多少天的例子
- 使用Blend来为WPF程序制作Textbox数据绑定效果
- DevExpress WPF入门指南:跟随 Items Source 向导完成数据绑定
- WPF 数据控件绑定数据与 ASP.NET数据控件绑定数据的区别
- WPF程序设计指南: Binding(数据绑定)[上]
- WPF程序设计指南第四章FormatTheButton例子效果
- WPF4数据绑定应用之“创建具有多种显示效果的字串”
- WPF 数据控件绑定数据与 ASP.NET数据控件绑定数据的区别
- WPF资源Resources的创建以及动态修改和数据绑定。
- WPF程序设计指南第24张样式中DataTrigger中使用绑定的例子
- wpf数据绑定source和elementname的区别
- WPF 数据控件绑定数据与 ASP.NET数据控件绑定数据的区别
- WPF程序设计指南: Binding(数据绑定)[下]
- WPF 实现跑马灯效果的Label控件,数据绑定方式实现
- DevExpress WPF入门指南:跟随 Items Source 向导完成数据绑定
- WPF 中DataGrid控件绑定数据的一个例子
- WPF数据绑定——Datacontext和itemsource的区别
- WPF程序设计指南第二章例子CircleTheRainbow效果
- WPF学习日志1---DataGrid绑定与修改更新(数据List & 数据库)[部分代码有摘录其他文章]
- WPF程序设计指南(Applications = Code + Markup)实例源码下载