一、添加方法
1、右键引用->管理NuGet程序包
搜索MVVMLightLibs 下载
二、使用方法
Xmal
<StackPanel>
<TextBlock Margin="5" Width ="100" Height="40" Text="{Binding Name}"/>
<Button Margin="5" Width ="60" Height="40" x:Name="textbox" Command="{Binding ShowCommand}" />
</StackPanel>
xmal.cs
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new MainViewModel();
}
}
public class MainViewModel : ViewModelBase
{
public MainViewModel()
{
ShowCommand = new RelayCommand(Show);
}
public RelayCommand ShowCommand { get; }
private void Show()
{
Name = "xxx点击了按钮!";
MessageBox.Show("xxx点击了按钮!");
}
private string _name;
public string Name
{
get { return _name; }
set { _name = value;
RaisePropertyChanged();
}
}
}
三、RelayCommand<String>带传参用法
Xmal
<StackPanel>
<TextBox Margin="5" Height="40" Text="{Binding Name}"/>
<TextBox x:Name="text" Margin="5" Height="40"/>
<Button Margin="5" Width ="60" Height="40" x:Name="textbox" Command="{Binding ShowCommand}"
CommandParameter="{Binding ElementName=text,Path=Text}" Content="Show"
/>
</StackPanel>
xmal.cs
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new MainViewModel();
}
}
public class MainViewModel : ViewModelBase
{
public MainViewModel()
{
ShowCommand = new RelayCommand<String>(Show);
}
public RelayCommand<String> ShowCommand { get; }
private void Show(string txt)
{
Name = "xxx点击了按钮!";
MessageBox.Show(txt);
}
private string _name;
public string Name
{
get { return _name; }
set { _name = value;
RaisePropertyChanged();
}
}
}
四、Messenger.Default.Register<string>
Xmal.cs
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new MainViewModel();
//注册了一个地址为Token1,接收string类型参数的消息
Messenger.Default.Register<string>(this, "Token1", Show);
}
private void Show(string txt)
{
MessageBox.Show(txt);
}
}
public class MainViewModel : ViewModelBase
{
public MainViewModel()
{
ShowCommand = new RelayCommand<String>(Show);
}
public RelayCommand<String> ShowCommand { get; }
private string _name;
public string Name
{
get { return _name; }
set { _name = value;
RaisePropertyChanged();
}
}
private void Show(string txt)
{
Messenger.Default.Send(txt, "Token1");
}
}