SilverLight:在MVVM中实现多事件
来源:互联网 发布:淘宝被骗2800怎么报警 编辑:程序博客网 时间:2024/05/06 04:08
SilverLight:在MVVM中实现多事件
在开发Silverlight项目时,如果使用了MVVM架构时,可以实现业务逻辑与界面的完全分离。事件可以通过实现接口ICommand达到效果,比如:Button控件,如果要实现单击效果时,可以通过绑定Command即可。
但是如果需要实现鼠标离开Button事件怎么实现呢,就这是今天需要讨论的问题=》多事件实现
项目架构如下图:
我今天主要用Button做实验,来实现Button控件的单击事件和鼠标离开事件。这在非MVVM架构下非常容易实现。但是在MVVM架构,我们需要引用System.Windows.Interactivity.dll,此动态库存放的位置为C:/Program Files/Microsoft SDKs/Expression/Blend 3/Interactivity/Libraries/Silverlight/System.Windows.Interactivity.dll
关于System.Windows.Interactivity.dll的介绍,请查看http://msdn.microsoft.com/zh-cn/library/system.windows.interactivity(v=Expression.40).aspx
通过引用动态库,然后在MainPage.xaml中实现Button的两个事件。代码如下:
MainPage.xaml
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:local="clr-namespace:MoreEventViewModel;assembly=MoreEventViewModel"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<UserControl.Resources>
<local:MoreEventsViewModel x:Key="k"/>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White" DataContext="{StaticResource k}">
<Button Content="测试多事件" Width="70" Height="25">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<i:InvokeCommandAction Command="{Binding BtnClick}"/>
</i:EventTrigger>
<i:EventTrigger EventName="MouseLeave">
<i:InvokeCommandAction Command="{Binding MouseLeave}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</Grid>
</UserControl>
那么ViewModel和ICommand的实现非常简单,两个文件的代码如下
MoreEventsViewModel.cs
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace MoreEventViewModel
{
public class MoreEventsViewModel
{
public MoreEventsViewModel()
{
}
private void MouseLeaveEvent(object obj)
{
MessageBox.Show("测试鼠标离开事件");
}
private void BtnClickEvent(object obj)
{
MessageBox.Show("测试单击事件");
}
public ICommand MouseLeave
{
get { return new MoreEventCommand(MouseLeaveEvent); }
}
public ICommand BtnClick
{
get { return new MoreEventCommand(BtnClickEvent); }
}
}
}
MoreEventCommand.cs 通过以上方法即可在MVVM实现多事件.通过这个件事,大家可以触类旁通,实现其它控件的多事件。希望对大家有用。
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace MoreEventViewModel
{
public class MoreEventCommand:ICommand
{
Action<object> _action;
public MoreEventCommand(Action<object> ac)
{
_action = ac;
}
public bool CanExecute(object parameter)
{
return true;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
if (_action != null)
_action(parameter);
}
}
}
点击下载源程序
- SilverLight:在MVVM中实现多事件
- SilverLight:在MVVM中实现多事件
- SilverLight:在MVVM中实现多事件
- 多事件引擎实现
- js 实现多事件绑定
- ListView自定义adapter中处理多事件
- Qt中多事件使用实例
- Silverlight 在MVVM中同步UI的SelectedItems和DataContext
- Silverlight:在MVVM模式中打开子窗体(Child Window)
- Silverlight中使用MVVM(1)
- Silverlight中使用MVVM(2)
- Silverlight中使用MVVM(3)
- Silverlight中使用MVVM(4)
- SilverLight中MVVM设计模式
- buttom多事件处理
- javascript注册多事件
- 多事件监听--java
- H5-多事件绑定
- 史上最牛的 shell命令
- CFile操作详解
- 垂直供应链电子商务平台-未来电子商务战略趋势
- Sql Server基本函数
- asp.net利用RAR实现文件压缩解压缩
- SilverLight:在MVVM中实现多事件
- 心情不好。。。
- 从美国看中国发展电子商务的一些启示
- jquery报表
- MapObject 2.1在C#中的使用
- SilverLight:使用MVVM实现View层在程序运行时自动生成控件并且取得其值
- jboss 远程访问 配置,工作手记
- 用Oracle闪回功能(flashback)恢复删除的数据---Oracle;闪回;回滚段;数据恢复
- 用Oracle闪回功能(flashback)恢复删除的数据---Oracle;闪回;回滚段;数据恢复