快速业务通道

在Canvas上根据变量改变Shape的位置

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
; Height="23" Width="81" VerticalAlignment="Top" HorizontalAlignment="Right" Click="button2_Click" > Check Y Value </Button> <ScrollBar Name="scbY" Margin="12,180,5,0" Height="20" Width="181" VerticalAlignment="Top" Orientation="Horizontal" Value="{Binding Path=RectY, Mode=TwoWay}" Maximum="200" /> <Canvas Margin="0,0,0,0" Grid.Row="1" > <Canvas.Background> <Custom:LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5" > <Custom:GradientStop Color="#FF337496" Offset="0" /> <Custom:GradientStop Color="#FF94E2EC" Offset="1" /> </Custom:LinearGradientBrush> </Canvas.Background> <Rectangle Height="20" Width="20" Stroke="#FF301A87" Fill="#FF8169E6" Canvas.Left="{Binding Path=RectX}" Canvas.Top="{Binding Path=RectY}" /> </Canvas> </Grid> </Window>

那么来看看这个界面涉及到哪些数据绑定。

数据源方面, Window1里有两个int类型的属性,RectX和RectY,分别用于指定位于Canvas内的Rectangle的X和Y坐标; 并且Window1的DataContext在代码里设置为了this。

接下来看看绑定目标方面。首先是TextBox 。两个TextBox分别与RectX和RectY做了双向绑定,也就是说当RecX或RectY有了更新,则对应的TextBox 会马上反应更新,而用户在TextBox中输入数字的时候RectX或RectY也会得到相应的更新。使用标记扩展 (markup extension)语法来指定绑定:

Xml代码

<TextBox 

Name="txtX"
  Text="{Binding Path=RectX, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 

/>

这里要注意的是,如果不显式指定TextBox的Text数据绑定中的 UpdateSourceTrigger,则默认为LooseFocus,那么要等到TextBox失去焦点后才会发生TextBox- >source的更新;而这里我们想要的是文本框里的文本发生改变时就马上更新。

绑定方向一共有4种:OneWay、TwoWay、OneTime和OneWayToSource。

OneWay就是目标根据数据源变化;

TwoWay就是目标和数据源相互都能更新;

OneTime就是目标只在初始化的时候读取一次数据,以后就不再跟随数据源而变化;

OneWayToSource是OneWay的反向,在目标的数据更新的时候也更新到数据源上。这主要是为了让没有DependencyProperty的属性能被有DependencyProperty的属性更新。

如果不使用标记扩展,也可以用传统的XML语法来指定数据绑定,像这样:

Xml代码

<TextBox Name="txtX" >
    <TextBox.Text>
        <Binding Path="RectX" Mode="TwoWay" 

UpdateSourceTrigger="PropertyChanged" />
    </TextBox.Text>
</TextBox>

然后是两个Label。它们只是对RectX和RectY做了单向绑定,也就是当 RectX或RectY有了更新,则对应的Label会马上反应更新。

Xml代码

<L

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号