gpt4 book ai didi

c# - 使用单个通用命令处理多个按钮

转载 作者:行者123 更新时间:2023-11-30 14:01:06 24 4
gpt4 key购买 nike

我正在构建一个简单的计算器应用程序。我也在学习如何在我的应用中应用 MVVM 模式。

我希望我的计算器的每个“数字”按钮都绑定(bind)到同一个命令,它们只会在发出命令的按钮的数字(文本)上有所不同。

例如,当按钮“1”被点击时,我想收到关于它的通知,从发件人的属性中提取“1”,并继续所需的其余工作。

这允许我定义一个方法而不是 10 个不同的处理程序。

到目前为止,就我在所有 MVVM 教程中看到的而言,这是不可能的,因为在绑定(bind)到将处理点击的实际方法时,命令绑定(bind)不会向我提供所有这些信息。

有什么方法可以轻松完成我的要求吗?

最佳答案

假设我了解您要执行的操作,您可以使用 CommandParameter 属性让不同的按钮为同一命令提供值。例如:

...
<Button Content="1" Command="{Binding ButtonClickCommand}" CommandParameter="1"/>

<!-- Or, bind directly to the button's content using RelativeSource, like so: -->
<Button Content="2" Command="{Binding ButtonClickCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=Content}"/>
...

并且在您的命令的委托(delegate)方法中:

private void ButtonClickCommandHandler(object parameter)
{
switch(int.Parse(parameter.ToString()))
{
case 1:
...
case 2:
...
}
}

关于c# - 使用单个通用命令处理多个按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8949183/

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