WPF中CommandParameter用法

12 篇文章 0 订阅

1. 界面样式

2. XAML中代码部分

<Button
    Grid.Row="0"
    Grid.Column="1"
    Command="{Binding BtnClick_Number}"
    CommandParameter="7"
    Content="7"
    Style="{StaticResource BtnStyle_Num}" />
<Button
    Grid.Row="0"
    Grid.Column="2"
    Command="{Binding BtnClick_Number}"
    CommandParameter="8"
    Content="8"
    Style="{StaticResource BtnStyle_Num}" />

3. ViewModel中代码部分

public RelayCommand<object?> BtnClick_Number { get; }

//构造函数中:
BtnClick_Number = new RelayCommand<object?>(OperNumber);

//函数实现:
private void OperNumber(object? obj)
{
    if (FxShow != null && obj != null)
    {
        FxShow = FxShow.Insert(FxShowSelectStart, obj.ToString()!);
        FxShowSelectStart++;
    }
}

这样便可以实现在一个函数(OperNumber)中根据不同的CommandParameter区分不同的按钮点击事件。

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用MVVM架构的WPF应用程序,可以使用以下方法将多个参数传递给CommandParameter: 1. 使用Tuples:使用C# 7.0及更高版本的元组功能可以将多个参数组合成一个元组并将其作为CommandParameter传递。例如: ``` <Button Content="Submit" Command="{Binding SubmitCommand}"> <i:Interaction.Triggers> <i:EventTrigger EventName="Click"> <i:InvokeCommandAction Command="{Binding SubmitCommand}" CommandParameter="(1, 'Hello', true)" /> </i:EventTrigger> </i:Interaction.Triggers> </Button> ``` 在ViewModel,您可以使用元组解包这些参数: ``` public ICommand SubmitCommand => new RelayCommand<(int, string, bool)>(ExecuteSubmit); private void ExecuteSubmit((int, string, bool) args) { int arg1 = args.Item1; string arg2 = args.Item2; bool arg3 = args.Item3; // Do something with the parameters } ``` 2. 自定义类:创建一个包含多个属性的自定义类,然后将该类的实例作为CommandParameter传递。例如: ``` public class SubmitCommandParameter { public int Id { get; set; } public string Message { get; set; } public bool IsEnabled { get; set; } } <Button Content="Submit" Command="{Binding SubmitCommand}"> <i:Interaction.Triggers> <i:EventTrigger EventName="Click"> <i:InvokeCommandAction Command="{Binding SubmitCommand}" CommandParameter="{StaticResource SubmitCommandParameter}" /> </i:EventTrigger> </i:Interaction.Triggers> </Button> <Window.Resources> <local:SubmitCommandParameter x:Key="SubmitCommandParameter" Id="1" Message="Hello" IsEnabled="true" /> </Window.Resources> public ICommand SubmitCommand => new RelayCommand<SubmitCommandParameter>(ExecuteSubmit); private void ExecuteSubmit(SubmitCommandParameter parameter) { int id = parameter.Id; string message = parameter.Message; bool isEnabled = parameter.IsEnabled; // Do something with the parameters } ``` 希望这些示例能够帮助您在MVVM的WPF应用程序使用InvokeCommandAction传递多个参数作为CommandParameter

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值