wpfmvvm,Windows Phone 7 MVVM模式通讯方式之实现Attached Behavior

MVVM模式的View与ViewModel的三大通讯方式:Binding Data(实现数据的传递)、Command(实现操作的调用)和Attached Behavior(实现控件加载过程中的操作)。
(1)Windows Phone 7 MVVM模式通讯方式之实现Binding Data。
(2)Windows Phone 7 MVVM模式通讯方式之实现Command。
(3)Windows Phone 7 MVVM模式通讯方式之实现Attached Behavior。
下面通过一个实例实现MVVM模式的Attached Behavior通讯,Attached Behavior与Command的区别就是,Attached Behavior在控件的加载过程中完成它的任务。
下面看一下实例的运行效果:
Windows Phone 7 MVVM模式通讯方式之实现Attached Behaviorwpfmvvm
(1)MainPage.xaml页面代码,View层


(2)Behavior.cs类代码,处理附加的属性和事件。
using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media; namespace AttachedBehaviorDemo { static public class Behavior { //注册一个附加属性BrushProperty,在XAML中名字为Brush,是Brush类型,在Hover类中,PropertyMetadata初始化元数据 public static readonly DependencyProperty BrushProperty = DependencyProperty.RegisterAttached( "Brush", typeof(Brush), typeof(Behavior), new PropertyMetadata (null, new PropertyChangedCallback(OnHoverBrushChanged))); /// /// 获取Brush的属性值 /// ///
/// public static Brush GetBrush(DependencyObject obj) { return (Brush)obj.GetValue(BrushProperty); } /// /// 设置属性的值 /// ///
///
public static void SetBrush(DependencyObject obj, Brush value) { obj.SetValue(BrushProperty, value); } /// /// 属性初始化 /// ///
///
private static void _disibledevent=>//获取属性所在的TextBlock控件 TextBlock control = obj as TextBlock; //注册控件的事件 if (control != null) { //注册鼠标进入事件 control.MouseEnter += new MouseEventHandler(OnControlEnter); //注册鼠标离开事件 control.MouseLeave += new MouseEventHandler(OnControlLeave); } } /// /// 鼠标进入事件 /// ///
///
static void _disibledevent=>object sender, MouseEventArgs e) { //获取当前的TextBlock控件 TextBlock control = (TextBlock)e.OriginalSource; //设置控件的前景颜色为红色 control.Foreground = new SolidColorBrush(Colors.Red); } /// /// 鼠标离开事件 /// ///
///
static void _disibledevent=>object sender, MouseEventArgs e) { //获取当前的TextBlock控件 TextBlock control = (TextBlock)e.OriginalSource; //设置控件的前景颜色为当前控件的Brush属性的值 control.Foreground = GetBrush(control); } } }

Tags:  mvpmvvm mvvm模式 mvvm是什么 wpfmvvm

延伸阅读

最新评论

发表评论