【问题标题】:Get the commandparameter value when clicking a button MVVM单击按钮时获取命令参数值 MVVM
【发布时间】:2017-11-24 04:10:01
【问题描述】:

其他示例不起作用或与我所做的完全不同。

所以我的 XAML 页面上有一个按钮,如下所示:

 <Button Width="100"
         Height="50"
         Margin="0 0 10 0"
         Command="{Binding MenuButtonViewModel.MenuButtonCommand, Source={StaticResource Locator}}"
         CommandParameter="{Binding Parameter}"
         IsEnabled="{Binding IsEnabled}">

在我的 ViewModel 上:

    public RelayCommand MenuButtonCommand
    {
        get
        {
            return new RelayCommand(() =>
            {
            });
        }
    }

问题是如何在我的 ViewModel 上获取命令参数的值?

    public RelayCommand<String> MenuButtonCommand
    {
        get
        {
            return new RelayCommand((parameter) =>
            {
                 Text = parameter;
            });
        }
    }

这不起作用,不知道如何在不必使用代码隐藏将命令参数值传递给 ViewModel 的情况下执行此操作。

【问题讨论】:

  • 这应该可以。显示您在 Parameter 属性中的内容。
  • 带有字符串参数的 RelayCommand 看起来不错。您没有获得参数值可能是由于 {Binding Parameter} 绑定失败,或者绑定源提供的值/对象不是字符串...
  • 我收到错误“委托‘操作’不接受 1 个参数”。
  • 啊,是的...尝试像new RelayCommand&lt;string&gt;( ... )一样初始化你的RelayCommand
  • RelayCommand 的实现方式是什么?你试过这个:stackoverflow.com/a/22286816/891715

标签: c# xaml mvvm command mvvm-light


【解决方案1】:

好的,找到了解决方案:

    public RelayCommand<string> Command
    {
        get
        {
            return new RelayCommand<string>(parameter =>
            {
                var str = parameter;
            });
        }
    }

谢谢大家。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-27
    • 2013-09-08
    • 1970-01-01
    • 1970-01-01
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多