在后面的代码中提高ICommand以及两个自定义命令参数

妄想X

我已经在MVVM视图模型中创建了一个ICommand。而且此ICommand每次都使用某些参数应用于不同的按钮。具体来说两个参数。我想从后面的代码中引发该命令,并将值设置为这两个命令参数。

<Button 
    Content="button 1" 
    Name="butonn_1"
    Command="{Binding CustomCommand}">
    <Button.CommandParameter>
        <local:MyCommandParameter
                MyString="Nick"
                MyInt="12"/>
    </Button.CommandParameter>

ICommand被调用CustomCommand并接收两个CommandParametersMyStringMyInt

ICommand和参数

public class MyCommandParameter
{
    public int MyInt { get; set; }
    public string MyString { get; set; }
}

public ICommand ViewTableCommand
{
    get { return new DelegateCommand<object>(FuncToCall); }
}
public void FuncToCall(object parameter)
{
    var param = (MyCommandParameter)parameter;
    Debug.WriteLine($"Name: {param.MyString} and Age: {param.MyInt}";
}

现在,我创建了另一个方法,可以在需要时调用ICommand。但是每次ICommand应该为每个CommandParameters获得不同的值。例如,

public void RaiseCommandButton(Button ButtonName)
{
    ButtonName.Command.Execute(ButtonName.CommandParameter);
}

这就是我想随时提高ICommand的方式。但是到目前为止,我只能给出一对CommandParameters。例如,我想做下面的事情

//Pseudo code - does not work but describes what I want to achieve
public void RaiseCommandButton(Button ButtonName)
{
    ButtonName.Command.Execute(ButtonName.CommandParameter(MyString: "Nikos", MyInt:"12");
    //...rest code
}

为了解决这个问题,我搜索了各种链接,例如:

但是这些链接都无法回答我的问题。我非常感谢社区的帮助。

彼得·杜尼奥(Peter Duniho)

在原始代码中,您正在传递CommandParameter在XAML中声明值。这就是为什么您使用该CommandParameter属性。但是,该属性仅是:一个属性,您可以检索其值。这不是您可以将参数值传递给的方法。

在您发布的代码中,还有一个问题"string不是文字的正确分隔符'

似乎您应该能够为MyCommandParameter您想要给我的每个呼叫创建一个新实例。例如:

public void RaiseCommandButton(Button ButtonName)
{
    ButtonName.Command.Execute(new MyCommandParameter { Name = "Nikos", Age = 12 });
    //...code
    
    //Raise command with different pair of Parameters
    ButtonName.Command.Execute(new MyCommandParameter { Name = "Alex", Age = 25 });
}

请记住,在伪代码版本中,使用的属性名称与在类的实际声明中显示的属性名称不同MyCommandParameter我已经重用了那些属性名称,而不是原始的MyStringMyInt名称。我想您了解这种区别,并且可以使用实际上适合您的实际代码的任何属性名称来编写实际的实现。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果两个涉及的对象都是在后面的代码中创建的,则元素绑定

来自分类Dev

后面的自定义验证代码

来自分类Dev

如何在后面的代码中使用SqlDataSource.SelectCommand中的参数化查询?

来自分类Dev

动态创建StackPanel,并在后面的代码中引用其中的任何一个

来自分类Dev

c#-在后面的代码中添加一个 ASP:Button

来自分类Dev

在后面的代码中绑定到相对源

来自分类Dev

如何在后面的代码中使用SqlDataAdapter?

来自分类Dev

在后面的代码中设置DataContext的顺序

来自分类Dev

DotNetNuke DDRMenu在后面的代码中设置了NodeSelector

来自分类Dev

在后面的代码中从ResourceDictionary检索值

来自分类Dev

在后面的代码中设置控件的StaticResource样式

来自分类Dev

在后面的代码上编写重写规则

来自分类Dev

在后面的代码中设置AutomationProperties.AutomationId

来自分类Dev

在后面的代码中设置x:DeferLoadStrategy

来自分类Dev

在后面的代码中调用按钮的OnClientClick

来自分类Dev

xmldataprovider在后面的代码中使用元素值

来自分类Dev

将表单保存在后面的代码中

来自分类Dev

如何在后面的代码中使用SqlDataAdapter?

来自分类Dev

在后面的代码中更改警报的字体

来自分类Dev

在后面的代码中访问DataTemplate控件

来自分类Dev

在后面的代码中获取li标签的值

来自分类Dev

在后面的代码中设置AutomationProperties.AutomationId

来自分类Dev

在后面的代码中创建treeview json

来自分类Dev

在后面的代码中创建jqGrid列模型

来自分类Dev

在后面的代码中更改Label的ContentStringFormat属性

来自分类Dev

绑定控件在后面的代码中被检查

来自分类Dev

在后面的代码中更改徽章颜色

来自分类Dev

在后面的代码中创建contentcontrol

来自分类Dev

回复:资源无法在后面的代码中访问

Related 相关文章

  1. 1

    如果两个涉及的对象都是在后面的代码中创建的,则元素绑定

  2. 2

    后面的自定义验证代码

  3. 3

    如何在后面的代码中使用SqlDataSource.SelectCommand中的参数化查询?

  4. 4

    动态创建StackPanel,并在后面的代码中引用其中的任何一个

  5. 5

    c#-在后面的代码中添加一个 ASP:Button

  6. 6

    在后面的代码中绑定到相对源

  7. 7

    如何在后面的代码中使用SqlDataAdapter?

  8. 8

    在后面的代码中设置DataContext的顺序

  9. 9

    DotNetNuke DDRMenu在后面的代码中设置了NodeSelector

  10. 10

    在后面的代码中从ResourceDictionary检索值

  11. 11

    在后面的代码中设置控件的StaticResource样式

  12. 12

    在后面的代码上编写重写规则

  13. 13

    在后面的代码中设置AutomationProperties.AutomationId

  14. 14

    在后面的代码中设置x:DeferLoadStrategy

  15. 15

    在后面的代码中调用按钮的OnClientClick

  16. 16

    xmldataprovider在后面的代码中使用元素值

  17. 17

    将表单保存在后面的代码中

  18. 18

    如何在后面的代码中使用SqlDataAdapter?

  19. 19

    在后面的代码中更改警报的字体

  20. 20

    在后面的代码中访问DataTemplate控件

  21. 21

    在后面的代码中获取li标签的值

  22. 22

    在后面的代码中设置AutomationProperties.AutomationId

  23. 23

    在后面的代码中创建treeview json

  24. 24

    在后面的代码中创建jqGrid列模型

  25. 25

    在后面的代码中更改Label的ContentStringFormat属性

  26. 26

    绑定控件在后面的代码中被检查

  27. 27

    在后面的代码中更改徽章颜色

  28. 28

    在后面的代码中创建contentcontrol

  29. 29

    回复:资源无法在后面的代码中访问

热门标签

归档