wpf mvvm模式下CommandParameter传递多参

时间:2023-03-09 17:48:46
wpf mvvm模式下CommandParameter传递多参

原文:wpf mvvm模式下CommandParameter传递多参

CommandParameter一般只允许设置一次,所以如果要传递多参数,就要稍微处理一下。我暂时还没找到更好的方案,下面介绍的这个方案我是目前在用的方案,但给人的感觉总是有些别扭,不像一个正统的解决方案:

   <Button.CommandParameter>

                <MultiBinding Converter="{StaticResource MultiParamterConverter}">

                    <Binding Path="ID"/>

                    <Binding Path="Name"/>

                </MultiBinding>

            </Button.CommandParameter>

转换器要这么写:

 public class MultiParamterConverter : IMultiValueConverter

    {

        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)

        {

            //必须新new一个,否则拿不到数据,因为values在返回之后,就会被清空了

            return values.Clone();

        }

        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)

        {

            throw new NotImplementedException();

        }

    }