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();
        }
    }

猜你喜欢

转载自www.cnblogs.com/lonelyxmas/p/10147181.html