WEB开发网
开发学院图形图像Flash Silverlight(15) - 2.0数据之一次绑定,单向绑定, ... 阅读

Silverlight(15) - 2.0数据之一次绑定,单向绑定, 双向绑定, INotifyPropertyChanged, 数据转换, 数据验证

 2008-12-08 11:51:59 来源:WEB开发网   
核心提示: using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Windows;using System.Windows.Controls;using System.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
  
using System.ComponentModel;
using System.Windows.Data;
  
namespace Silverlight20.Data
{
  public partial class Conversion : UserControl
  {
    MyColorEnum _myColorEnum;
  
    public Conversion()
    {
      InitializeComponent();
  
      this.Loaded += new RoutedEventHandler(Conversion_Loaded);
    }
  
    void Conversion_Loaded(object sender, RoutedEventArgs e)
    {
      _myColorEnum = new MyColorEnum() { ColorEnum = ColorEnum.Red };
  
      // DataContext - FrameworkElement 做数据绑定时的数据上下文
      // 将 MyColorEnum 对象绑定到 Ellipse
      ellipse.DataContext = _myColorEnum;
    }
  
    private void ellipse_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
      // 鼠标按下后修改 MyColorEnum 对象的属性
      if (_myColorEnum.ColorEnum == ColorEnum.Red)
        _myColorEnum.ColorEnum = ColorEnum.Green;
      else
        _myColorEnum.ColorEnum = ColorEnum.Red;
    }
  }
  
  /**//*
   * IValueConverter - 值转换接口,将一个类型的值转换为另一个类型的值。它提供了一种将自定义逻辑应用于绑定的方式
   *   Convert - 正向转换器。将值从数据源传给绑定目标时,数据绑定引擎会调用此方法
   *   ConvertBack - 反向转换器。将值从绑定目标传给数据源时,数据绑定引擎会调用此方法
  */
  public class ColorEnumToBrush : IValueConverter
  {
    /**//// <summary>
    /// 正向转换器。将值从数据源传给绑定目标时,数据绑定引擎会调用此方法
    /// </summary>
    /// <param name="value">转换之前的值</param>
    /// <param name="targetType">转换之后的类型</param>
    /// <param name="parameter">转换器所使用的参数</param>
    /// <param name="culture">转换器所使用的区域信息</param>
    /// <returns>转换后的值</returns>
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
      // 将 ColorEnum 类型的值转换为 SolidColorBrush 类型的值
  
      // parameter == 10
  
      ColorEnum color = (ColorEnum)value;
  
      SolidColorBrush brush = new SolidColorBrush(Colors.Red);
  
      if (color == ColorEnum.Green)
        brush = new SolidColorBrush(Colors.Green);
  
      return brush;
    }
  
    /**//// <summary>
    /// 反向转换器。将值从绑定目标传给数据源时,数据绑定引擎会调用此方法
    /// </summary>
    /// <param name="value">转换之前的值</param>
    /// <param name="targetType">转换之后的类型</param>
    /// <param name="parameter">转换器所使用的参数</param>
    /// <param name="culture">转换器所使用的区域信息</param>
    /// <returns>转换后的值</returns>
    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
      return null;
    }
  }
  
  /**//*
   * INotifyPropertyChanged - 向客户端发出某一属性值已更改的通知
   * 使用 OneWay 或者 TwoWay 的话必须要实现 INotifyPropertyChanged 接口
  */
  public class MyColorEnum : INotifyPropertyChanged
  {
    private ColorEnum _colorEnum;
    public ColorEnum ColorEnum
    {
      get { return _colorEnum; }
      set
      {
        _colorEnum = value;
        if (PropertyChanged != null)
        {
          // 触发 PropertyChanged 事件,事件参数为属性名称
          PropertyChanged(this, new PropertyChangedEventArgs("ColorEnum"));
        }
      }
    }
  
    // 声明一个 PropertyChanged 事件
    public event PropertyChangedEventHandler PropertyChanged;
  }
  
  /**//// <summary>
  /// 自定义的 ColorEnum 枚举
  /// </summary>
  public enum ColorEnum
  {
    Red,
    Green
  }
}

上一页  1 2 3 4 5 6  下一页

Tags:Silverlight 数据 之一

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接