如何在silverlight MVVM中建立命令连接?

时间:2011-09-18 13:06:28

标签: silverlight

我试图在我写的一些Silverlight模式中使用MVVM - 我写了视图 - 和viewmodel部分 - 但我需要在它们之间发出命令,我不知道该怎么做。

在视图中我有单个按钮,将启动命令。

怎么做?

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

在视图模型中

private RelayCommand _Command;
public RelayCommand Command
{
  get
  {
    if (_Command == null)
    {
      _Command= new RelayCommand(() =>
      {
      });
    }
    return _Command;
  }
  private set { }
}

使用参数

private RelayCommand<string> _Command;
public RelayCommand<string> Command
{
  get
  {
    if (_Command == null)
    {
      _Command= new RelayCommand<string>((X) =>
      {
      });
    }
    return _Command;
  }
  private set { }
}

在视图中

的xmlns:ⅰ= “CLR-名称空间:System.Windows.Interactivity;装配= System.Windows.Interactivity”     的xmlns:gs_cmd = “CLR-名称空间:GalaSoft.MvvmLight.Command;装配= GalaSoft.MvvmLight.Extras.SL4”

<Button  Grid.Row="1" Grid.Column="1" Margin="4" HorizontalAlignment="Right" Name="btnSelect" Content="..." Width="25" Height="25" TabIndex="2">
                                        <i:Interaction.Triggers>
                                            <i:EventTrigger EventName="Click">
                                                <gs_cmd:EventToCommand Command="{Binding Path=Command,Mode=OneWay}"/>
                                            </i:EventTrigger>
                                        </i:Interaction.Triggers>
                                    </Button>

答案 1 :(得分:0)

带有参数的另一个版本,添加到Masoomian的anser:

private RelayCommand<MyViewModel> _Command; 
public RelayCommand<MyViewModel> Command 
{ 
  get 
  { 
    if (_Command == null) 
    { 
      _Command= new RelayCommand<MyViewModel>((vm) => 
      { 
        vm.IsBusy = true; // Set a Parameter
        vm.DoSomething(); // Do some work
        // Call other methods on the View Model as needed
        // ...
      }); 
    } 
    return _Command; 
  } 
  private set { } 
}