在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}");}
}