我试图在我写的一些Silverlight模式中使用MVVM - 我写了视图 - 和viewmodel部分 - 但我需要在它们之间发出命令,我不知道该怎么做。
在视图中我有单个按钮,将启动命令。
怎么做?
感谢您的帮助。
答案 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 { }
}