zoukankan      html  css  js  c++  java
  • Silverlight实用窍门系列:63.Silverlight中的Command,自定义简单Command

        在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,有一个不能点击。

  • 相关阅读:
    P4281 [AHOI2008]紧急集合 / 聚会
    P2622 关灯问题II
    CF1092F Tree with Maximum Cost
    10.28记
    威尔逊定理及证明
    CF895C Square Subsets
    洛谷 P5556 圣剑护符
    Multi-nim结论及证明
    AT2667 [AGC017D] Game on Tree
    洛谷 P4643 [国家集训队]阿狸和桃子的游戏
  • 原文地址:https://www.cnblogs.com/chengxingliang/p/2438438.html
Copyright © 2011-2022 走看看