wpf - 如何使用多重绑定(bind)将参数传递给命令?

标签 wpf mvvm-toolkit

我正在使用 MVVM 工具包版本 1。我有两个文本框 textbox1 和 textbox2。我需要在按下按钮时将这两个值作为参数传递,并且需要在名为 textbox3 的第三个文本框上显示结果。

我的虚拟机代码类似这样

public ICommand AddCommand
    {
        get
        {
            if (addCommand == null)
            {
                addCommand = new DelegateCommand<object>(CommandExecute,CanCommandExecute);
            }
            return addCommand;
        }
    }

    private void  CommandExecute(object parameter)
    {
        var values = (object[])parameter;
        var a= (int)values[0];
        var b= (int)values[1];
        Calculater calcu = new Calcu();
        int c = calcu.sum(a, b);      
    }

    private bool  CanCommandExecute(object parameter)
    {
        return true;  
    }

当用户单击按钮时会调用 commandExecute 方法,但我的参数参数没有任何值。我如何将用户的值作为参数传递?并将结果返回到texbox3?

最佳答案

你可以使用多重绑定(bind)和转换器

<Button Content="Add" Command="{Binding AddCommand}"
 <Button.CommandParameter>
    <MultiBinding Converter="{StaticResource YourConverter}">
         <Binding Path="Text" ElementName="txt1"/>
         <Binding Path="Text" ElementName="txt2"/>
    </MultiBinding>
 </Button.CommandParameter>
</Button>

转换器
public class YourConverter : IMultiValueConverter
{
 public object Convert(object[] values, ...)
 {
    //.Net4.0
    return new Tuple<int, int>((int)values[0], (int)values[1]);

    //.Net < 4.0
    //return values.ToArray();
 }

 ...
}

命令
private void  CommandExecute(object parameter)
{
    var o= (Tuple<int, int>)parameter;
    var a= o.Item1;
    var b= o.Item2;
    Calculater calcu = new Calcu();
    int c = calcu.sum(a, b);      
}

ps:请检查我的语法 - 它是从我的脑海中写出来的......

关于wpf - 如何使用多重绑定(bind)将参数传递给命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9108044/

相关文章:

c# - 为什么简单程序的bin输出中有这么多DLL

c# - ListBox ItemsSource 不更新

silverlight - 无法将 VM 中的 ICommand 绑定(bind)到 xaml 中的按钮命令

silverlight - 使用 M-V-VM Light 根据 Silverlight 4 中的业务规则标准标记 DataGrid 行

c# - 需要一些关于排序字符串列表的想法

c# - 添加右键单击上下文菜单。

c# - 如何让DataGrid整体单站关注方向键行选择遍历?

WPF (MVVM) : Wiring up viewModel to view in code-behind of Window?

.net - MVVM 基础与 MVVM 工具包

c# - WPF MVVM - 重复组合框,将 selectedItem 作为参数传递