我試圖在我寫的一些silverlight模式中使用MVVM - 我寫了視圖 - 和視圖模型部分 - 但我需要在它們之間做出命令,我不知道該怎麼做。如何在silverlight MVVM中建立命令連接?
在視圖中我有單個按鈕,將啓動該命令。
怎麼辦?
感謝您的幫助。
我試圖在我寫的一些silverlight模式中使用MVVM - 我寫了視圖 - 和視圖模型部分 - 但我需要在它們之間做出命令,我不知道該怎麼做。如何在silverlight MVVM中建立命令連接?
在視圖中我有單個按鈕,將啓動該命令。
怎麼辦?
感謝您的幫助。
在View模型
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 { }
}
在View
的xmlns:ⅰ=「CLR-名稱空間:System.Windows.Interactivity;裝配= System.Windows。交互性「 xmlns:gs_cmd =」clr-namespace:GalaSoft.MvvmLight.Command; assembly = 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>
ICommand設置的優點是您也可以傳遞ViewModel實例。因此,RelayCommand
RealyCommand在你的ViewModel中定義你可以改變ViewModel屬性,使用這個代碼發送參數到viewmodel
另一個版本的參數,添加到Masoomian的雁:
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 { }
}
看指揮:ICommand的,ApplicationCommands,... http://msdn.microsoft.com/en-us/library/ ms752308.aspx – kenny