科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件XAML开发入门之附加属性和绑定属性

XAML开发入门之附加属性和绑定属性

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

有极少数的XAML元素存在下面所描述的情况,就是其自身的属性大多数情况下是在其它的元素中进行声明和使用的

作者:轩辕南宫 来源:天极开发 2007年11月3日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
绑定属性

  在ASP.NET中,我们通常使用<%# 数据表达式%>这样的语法创建服务器控件属性和数据源之间的绑定。那么要在WPF中创建一个XAML元素的属性和数据源之间的绑定应该怎么实现呢?为此我们引入了一种新的概念-绑定属性。我们可以在一个元素中使用绑定属性去引用原本属于其它元素的属性值,这个包含绑定属性的元素称为目标元素,而被引用的那个元素称为源元素。注意,绑定属性必须和目标元素的从属属性相关联。 我们在目标元素中使用绑定属性来绑定源元素的相应属性值,如果源元素中的相应属性值在程序运行时发生了变化,那么目标元素中的从属属性的属性值也将做出同样改变。也就说绑定属性会自动解析所绑定的属性值是否发生了变化,并将发生的改变马上反馈到从属属性中。在学习C#时,我们通常会使用如下的代码来说明赋值的意义:

37 int a = 1;
38 int b;
39 b = a;

  其中变量a就相当于我们上述的源元素那样,其值为1,而变量b就相当于目标元素那样,通过语句"b=a"将值1"绑定"到b,使得变量b的值现在也为1。但是它和实际的WPF程序中的绑定语法不同的是,当a的值发生改变后,b的值是不会发生改变的,依然为1。

  而WPF中的绑定语法会根据源元素的属性值改变做出同样的响应,这种关联是一直持续的。在XAML中是使用Binding关键字来维续它们的一致性。

  Binding元素的语法如下:

01 <Binding ElementName[元素名]=" …" Path[属性名]="…"/>

  我们用Binding关键字来表明这是一个绑定表达式语法,使用这种语法的实现都会在运行阶段进行实时的解析,以获得源元素的当前值。

  在前面我们曾经创建了一个实例,就是你点击了多少次按钮,就会在按钮上的文本进行呈现。现在我们来使用绑定属性来扩展这个示例。我们可以为该页面添加一个TextBox元素,使得文本框中文本和一个TextBlock元素上的文本一致,也就是说将TextBox元素的Text属性和TextBlock元素的Text属性进行绑定,当你点击按钮时,就使得上述的两个文本信息同时发生变化,并且文本信息会显示改变的次数。

01 <Window
02 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
03 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
04 x:Class="SDKSample.Window1"
05 Width="460"
06 Height="200"
07 Title="BindDPtoDP">
08
09 <DockPanel Background="White">
10
11 <Button Click="btnChangeSource" Width="150" Height="30"
12 DockPanel.Dock="Top">Change Source Property</Button>
13
14 <TextBlock Name="Text1" DockPanel.Dock="Top" FontSize="12"
15 Height="30" Foreground="Green">
16 <TextBlock.Text>
17 Click the Button to Change this Initial Text Value in this Source Element
18 </TextBlock.Text>
19 </TextBlock>
20
21 <TextBox DockPanel.Dock="Top" Height="30" Foreground="Blue">
22 <TextBox.Text>
23 <Binding ElementName="Text1" Path="Text"/>
24 </TextBox.Text>
25 </TextBox>
26
27 </DockPanel>
28
29 </Window>

  在第23行代码处,可以看到我们在<TextBox.Text>从属属性中使用了绑定表达式语法来绑定TextBlock元素的Text属性.

  对应的代码后置文件

01 using System;
02 using System.ComponentModel;
03 using System.Windows;
04 using System.Windows.Controls;
05 using System.Windows.Documents;
06 using System.Windows.Data;
07 using System.Windows.Media;
08
09 namespace SDKSample
10 {
11 /// <summary>
12 /// Window1: This is the class that encapsulates the code
13 /// "behind" the Window1.Xaml page.
14 /// </summary>
15 public partial class Window1 : Window
16 {
17 static int iCount = 0;
18
19 void btnChangeSource(object sender, RoutedEventArgs e)
20 {
21 iCount++;
22 Text1.Text = string.Format("New Text. Count={0}", iCount);
23 }
24 }
25 }

  效果下图所示,只要你点击按纽, TextBox元素的Text属性值和TextBlock元素的Text属性值都将发生变化.

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章