在Canvas上根据变量改变Shape的位置
; 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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |