在NuGet中引入该库:
MVVMLight框架中的命令模式的使用:
<StackPanel>
<TextBox Text="{Binding Name}"/>
<TextBox Text="{Binding Title}"/>
<Button Content="点我" Command="{Binding ShowCommand}"/>
</StackPanel>
DataContext = new MainViewModel();
internal class MainViewModel : ViewModelBase
{
public MainViewModel()
{
Name = "hello";
ShowCommand = new RelayCommand(Show);
}
public RelayCommand ShowCommand { get; set; }
private string name;
public string Name
{
get { return name; }
set
{
name = value;
RaisePropertyChanged();
}
}
private string title;
public string Title
{
get { return title; }
set
{
title = value;
RaisePropertyChanged();
}
}
public void Show()
{
Name = "点击了按钮";
Title = "点击了按钮";
MessageBox.Show("点击了按钮");
}
}
如果命令模式是需要从页面传参的情况呢?:
<StackPanel>
<TextBox x:Name="txtIput"/>
<TextBox Text="{Binding Title}"/>
<Button Content="点我" Command="{Binding ShowCommand}" CommandParameter="{Binding ElementName=txtIput,Path=Text}"/>
</StackPanel>
public MainViewModel()
{
ShowCommand = new RelayCommand<string>(Show);
}
public RelayCommand<string> ShowCommand { get; set; }
public void Show(string content)
{
Title = content;
MessageBox.Show($"需要展示的数据:{content}");
}
使用MVVMLight框架的命令模式,发送消息和接受消息:
MainViewModel.cs类:
internal class MainViewModel : ViewModelBase
{
public MainViewModel()
{
ShowCommand = new RelayCommand<string>(Show); // 注册消息
}
public RelayCommand<string> ShowCommand { get; set; }
void Show(string content)
{
Messenger.Default.Send(content, "token1"); // 发送器 发送string类型的消息
}
}
MainWindow.xaml类:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new MainViewModel();
// 接收器 接受string类型的消息 第二个参数:收件人
Messenger.Default.Register<string>(this, "token1", Show);
}
void Show(string content)
{
MessageBox.Show($"我收到消息了,消息的内容为:{content}");
}
}