0
点赞
收藏
分享

微信扫一扫

Toolkit.mvvm框架笔记

三分梦_0bc3 2022-05-04 阅读 83
c#wpf

在学习WPF的时候遇到绑定命令传递参数的问题在此记录一下。

正常情况下只需要声明以下代就可以。

<Border Grid.Row="1" BorderThickness="1" BorderBrush="#f1f1f1">
            <UniformGrid  Rows="1" Columns="8" Height="70">
                <Button Content="文件(F1)" Margin="10"   Style="{StaticResource ButtonPrimary}" Command="{Binding NavigationButtonCommand}" />
                <Button Content="设置(F2)" Margin="10"/>
                <Button Content="定义(F3)" Margin="10"/>
            </UniformGrid>
        </Border>
 private ICommand _NavigationButtonCommand;

        public ICommand NavigationButtonCommand
        {
            get => _NavigationButtonCommand;
            set =>SetProperty(ref _NavigationButtonCommand, value);
        }
        public HomeViewModel()
        {
            NavigationButtonCommand = new AsyncRelayCommand(ButonFunction);
        }
        public Task  ButonFunction()
        {
            
            return Task.CompletedTask;
        }

但是当我们想要传递参数的时候就需要在XAML中定义

CommandParameter="LoadFileView"

那么在VIEWMODEL中怎么定义呢?

 private ICommand _NavigationButtonCommand;

        public ICommand NavigationButtonCommand
        {
            get => _NavigationButtonCommand;
            set =>SetProperty(ref _NavigationButtonCommand, value);
        }
        public HomeViewModel()
        {
            NavigationButtonCommand = new AsyncRelayCommand<object>(ButonFunction);
        }
        public Task  ButonFunction(object e)
        {
            var a = e;
            return Task.CompletedTask;
        }

这样就可以了。

另外如果要把按钮自己穿过来就写成

 CommandParameter="{Binding RelativeSource={RelativeSource self}}
举报

相关推荐

0 条评论