引用mvvmlight dll ,操作command

时间:2023-03-08 22:09:35

前言

因为vs2010没有集成mvvmlight 所以想要使用mvvmlight的relaycomman需要引用dll

需要测试某个功能的时候,不能进行快带的集成

引用mvvmlight dll

如果以前有其它版本的vs能过nuget安装过,则目录 是:

c:\users\administrator.xdmwiwrtm7kc37y\documents\visual studio 2013\Projects\WpfApplication2\packages\MvvmLightLibs.4.2.30.0\lib\net40

引用

GalaSoft.MvvmLight.WPF4.dll

如何实现

xaml中的代码如下:

放一个button ,指定Button的命令是TestN, 这里是随便写的,全符合命名规范

注意:Datacontext的指定 ,如果不指定 ,命令不会触发。这里不加新类,直接写在CS里面。

就是为了测试而测试

<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wpfApplication2="clr-namespace:WpfApplication2"
Title="MainWindow" Height="350" Width="525"
DataContext="{Binding RelativeSource={RelativeSource Self}}"
>
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Button Command="{Binding TestN}" Width="100" Height="100" Content="wefwfwef"/>
</Grid> </Window>

注意:

如果没有以下这句,会报错

 DataContext="{Binding RelativeSource={RelativeSource Self}}"

cs后端的代码如下

  public partial class MainWindow : Window
{
private RelayCommand _testN; public MainWindow()
{
InitializeComponent();
//DataContext = this;
} public RelayCommand TestN
{
get { return _testN??(_testN=new RelayCommand(() =>
{
TestNMethod();
})); }
set { _testN = value; }
} private void TestNMethod()
{
throw new NotImplementedException();
}
}

注意:

如果xaml中没有指定 datacontxt,则要在构造 函数中指定datacontext是本类。

调用以后TestNMethod()方法会被触发。