热门标签:
您现在的位置>>.Net中文社区>>Silverlight
Silverlight2 实例之 数据绑定
浏览量:
作者:Gnie
来源:博客园
【实例源码下载】本篇介绍SL2的数据绑定功能,在Silverlight2中数据绑定有3中模式:
* 单向模式(OneWay):源数据更新时目标数据也随之更新。
* 双向模式(TwoWay):源数据或目标数据更新时,彼此相互更新。
* 一次模式(OneTime):只将源数据显示到目标,不用于更新。
单向模式为SL2默认的绑定模式,首先演示一个简单的OneTime模式:
XAML Code:
- <UserControl x:Class="DataBinding.Page"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- Width="300" Height="150" Loaded="Page_Loaded">
- <Grid x:Name="gridUser" Background="White">
- <Grid.RowDefinitions>
- <RowDefinition Height="40"></RowDefinition>
- <RowDefinition Height="40"></RowDefinition>
- <RowDefinition Height="40"></RowDefinition>
- </Grid.RowDefinitions>
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="80"></ColumnDefinition>
- <ColumnDefinition Width="*"></ColumnDefinition>
- </Grid.ColumnDefinitions>
- <TextBlock Grid.Row="0" Grid.Column="0" Text="Name"
- FontSize="20" Margin="5,5,5,5"></TextBlock>
- <!--绑定姓名数据-->
- <TextBox Margin="5,5,5,5" BorderBrush="Orange"
- Grid.Row="0" Grid.Column="1" FontSize="20"
- Text="{Binding Name}"></TextBox>
- <TextBlock Grid.Row="1" Grid.Column="0" Text="Age"
- FontSize="20" Margin="5,5,5,5"></TextBlock>
- <!--绑定年龄数据-->
- <TextBox Margin="5,5,5,5" BorderBrush="Orange"
- Grid.Row="1" Grid.Column="1" FontSize="20"
- Text="{Binding Age}"></TextBox>
- </Grid>
- </UserControl>
创建User Class:
- using System;
- using System.Windows;
- using System.Windows.Controls;
- using System.ComponentModel;
- namespace DataBinding
- {
- public class User
- {
- private string name;
- public string Name
- {
- get { return name; }
- set { name = value; }
- }
- private string age;
- public string Age
- {
- get { return age; }
- set { age = value; }
- }
- }
- }
主程序:
- using System;
- using System.Collections.Generic;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Documents;
- namespace DataBinding
- {
- public partial class Page : UserControl
- {
- public Page()
- {
- InitializeComponent();
- }
- private void Page_Loaded(object sender, RoutedEventArgs e)
- {
- User user = new User();
- user.Name = "Petter";
- user.Age = "20";
- gridUser.DataContext = user;
- }
- }
- }
运行效果:

下面上一个OneWay模式(也适用于TwoWay),XAML Code:
- <UserControl x:Class="DataBinding.Page"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- Width="400" Height="300" Loaded="Page_Loaded">
- <Grid x:Name="gridUser" Background="White">
- <Grid.RowDefinitions>
- <RowDefinition Height="40"></RowDefinition>
- <RowDefinition Height="40"></RowDefinition>
- <RowDefinition Height="40"></RowDefinition>
- </Grid.RowDefinitions>
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="80"></ColumnDefinition>
- <ColumnDefinition Width="*"></ColumnDefinition>
- </Grid.ColumnDefinitions>
- <TextBlock Grid.Row="0" Grid.Column="0" Text="Name"
- FontSize="20" Margin="5,5,5,5"></TextBlock>
- <!--绑定姓名数据-->
- <TextBox Margin="5,5,5,5" BorderBrush="Orange"
- Grid.Row="0" Grid.Column="1" FontSize="20"
- Text="{Binding Name, Mode=OneWay}"></TextBox>
- <TextBlock Grid.Row="1" Grid.Column="0" Text="Age"
- FontSize="20" Margin="5,5,5,5"></TextBlock>
- <!--绑定年龄数据-->
- <TextBox Margin="5,5,5,5" BorderBrush="Orange"
- Grid.Row="1" Grid.Column="1" FontSize="20"
- Text="{Binding Age, Mode=OneWay}"></TextBox>
- <!--点击更新数据-->
- <Button Grid.Row="2" Grid.Column="1" Width="100" Height="30"
- Content="Update Data" Click="Button_Click"></Button>
- </Grid>
- </UserControl>
User Class 也需要更新,这里要用到接口:INotifyPropertyChanged
- using System;
- using System.Windows;
- using System.Windows.Controls;
- using System.ComponentModel;
- namespace DataBinding
- {
- public class User : INotifyPropertyChanged
- {
- public event PropertyChangedEventHandler PropertyChanged;
- public void OnPropertyChanged(PropertyChangedEventArgs e)
- {
- if (PropertyChanged != null)
- PropertyChanged(this, e);
- }
- private string name;
- public string Name
- {
- get { return name; }
- set
- {
- name = value;
- OnPropertyChanged(new PropertyChangedEventArgs("Name"));
- }
- }
- private string age;
- public string Age
- {
- get { return age; }
- set
- {
- age = value;
- OnPropertyChanged(new PropertyChangedEventArgs("Age"));
- }
- }
- }
- }
主程序:
- using System;
- using System.Collections.Generic;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Documents;
- namespace DataBinding
- {
- public partial class Page : UserControl
- {
- public Page()
- {
- InitializeComponent();
- }
- private void Page_Loaded(object sender, RoutedEventArgs e)
- {
- User user = new User();
- user.Name = "Petter";
- user.Age = "20";
- gridUser.DataContext = user;
- }
- private void Button_Click(object sender, RoutedEventArgs e)
- {
- User user = (User)gridUser.DataContext;
- user.Name = "Jone";
- user.Age = "28";
- }
- }
- }
更多...好站/酷站
本站部份资源来于互联网,只供学习之用,不得用于商业,如有侵犯版权请联系告知,本站将第一时间删除!
站长QQ:373638128 邮箱:navy1015@126.com
copyright © 2008 .Net中文社区 ASPXCS.NET™.All Rights Reserved 滇ICP备08102132号
站长QQ:373638128 邮箱:navy1015@126.com
copyright © 2008 .Net中文社区 ASPXCS.NET™.All Rights Reserved 滇ICP备08102132号

