gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 10:31:08 28 4
gpt4 key购买 nike

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

<Button 
Content="button 1"
Name="butonn_1"
Command="{Binding CustomCommand}">
<Button.CommandParameter>
<local:MyCommandParameter
MyString="Nick"
MyInt="12"/>
</Button.CommandParameter>
ICommand称为 CustomCommand,并接收两个CommandParameters MyStringMyInt 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
}
为了解决这个问题,我搜索了各种链接,例如:
  • Link 1
  • Link 2
  • Link 3

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

    最佳答案

    在原始代码中,您要传递在XAML中声明的CommandParameter值。这就是为什么您使用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名称。我想您了解这种区别,并且可以使用实际上适合您的实际代码的任何属性名称来编写实际的实现。

    关于c# - 在后面的代码中提高ICommand以及两个自定义命令参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64850333/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com