Silverlight中的Command,自定义简单Command
来源:互联网 发布:南方公园知乎 编辑:程序博客网 时间:2024/06/10 19:20
在Silverlight中的MVVM模式下将前台页面和ViewModel界面交互分离开是通过本节所要讲述的Command实现的。我们自定义一个Command需要继承于ICommand接口并且实现这个接口。它有CanExecute()、Execute()方法和CanExecuteChanged事件组成。
CanExecute():判断是否继续执行操作。
Execute():执行操作的内容。
CanExecuteChanged:当出现影响是否应执行该命令的更改时发生。
首先:自定义的一个btnCommand。
public class btnCommand:ICommand
{
private bool canExe;
/// <summary>
/// 构造函数设置是否执行操作
/// </summary>
/// <param name="canexe"></param>
public btnCommand(bool canexe)
{
this.canExe = canexe;
}
/// <summary>
/// 判断是否执行操作
/// </summary>
/// <param name="parameter"></param>
/// <returns></returns>
public bool CanExecute(object parameter)
{
if (canExe)
{
return true;
}
return false;
}
/// <summary>
/// 是否执行操作的变更发生时
/// </summary>
public event EventHandler CanExecuteChanged;
/// <summary>
/// 执行操作的内容,可以变为Action行为
/// </summary>
/// <param name="parameter"></param>
public void Execute(object parameter)
{
if (parameter != null)
{ MessageBox.Show(parameter.ToString()); }
else
{
MessageBox.Show("未设置CommandParameter");
}
}
}
其次:定义一个ViewModel,并且在构造函数中初始化两个Command属性。
public class BtnViewModel
{
// 设置两个命令
public ICommand BtnCommand { get; set; }
public ICommand BtnCommandTrue { get; set; }
public BtnViewModel()
{
//初始化两个命令值
BtnCommand = new btnCommand(false);
BtnCommandTrue = new btnCommand(true);
}
}
再次将ViewModel初始化为页面数据源
<UserControl.DataContext>
<local:BtnViewModel />
</UserControl.DataContext>
最后:前台的两个按钮绑定Command
<Grid x:Name="LayoutRoot" Background="White">
<Button Content="第一个" Height="23" HorizontalAlignment="Left"
Command="{Binding BtnCommand}" CommandParameter="第一个Command"
Margin="94,80,0,0" Name="button1" VerticalAlignment="Top" Width="75" />
<Button Command="{Binding BtnCommandTrue}" CommandParameter="第二个Command"
Content="第二个" Height="23" HorizontalAlignment="Left" Margin="94,140,0,0"
Name="button2" VerticalAlignment="Top" Width="75" />
</Grid>
如需源码请点击 SLICommand.zip 下载,下面是效果图。有一个按钮CanExecute,有一个不能点击。
- Silverlight中的Command,自定义简单Command
- WPF/Silverlight中的Command
- WPF/Silverlight中的Command
- 自定义Command
- 自定义Command
- Silverlight - Attached Behavior + Command
- Command
- Command
- Command
- command
- Command
- Command
- command
- command!!!
- command
- command
- Command
- Command
- 关于C#中delegate的一个很好的诠释
- 计算机网络 --OSI模型---传输层
- 第七章 变量的位置
- 某android平板项目开发笔记----aChartEngine图表显示(2)
- 多线程之3-------多个线程访问共享数据的方式
- Silverlight中的Command,自定义简单Command
- C++ inline函数
- 矩阵乘法实现
- platform设备驱动之按键扫描(cdev设备)
- 如何在O(n)时间内找到一个整数数组中的第二大元素。
- Ubuntu 10.04 中文输入法安装
- ASP.NET缓存依赖--SQL Server 2005与SQL Server 2008缓存依赖
- ASP.NET自定义输出缓存提供程序
- POJ1001