引用mvvmlight dll ,操作command

前言

因为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()方法会被触发。

posted @ 2018-04-19 21:42  水木  阅读(220)  评论(0编辑  收藏  举报