WPF CommandParameter MultiBinding值为null

我只是尝试将两个控件绑定为命令参数,并将它们作为object[]传递给我的命令。

XAML:

              

命令:

 public ICommand ExpanderCommand { get { return new RelayCommand(delegate(object param) { var args = (object[])param; var content = (UIElement)args[0]; var button = (Button)args[1]; content.Visibility = (content.Visibility == Visibility.Visible) ? Visibility.Collapsed : Visibility.Visible; button.Content = (content.Visibility == Visibility.Visible) ? "-" : "+"; }); } } 

转换器:

 public class MultiValueConverter : IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return values; } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException("No two way conversion, one way binding only."); } } 

基本上发生的事情是绑定似乎工作正常并且转换器返回包含正确值的object[] ,但是当命令执行时param是包含相同数量的元素的object[] ,除了它们是null

有人可以告诉我为什么object[]参数的值被设置为null

谢谢,Alex。

这样做:

 public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { return values.ToArray(); } 

看一下这个问题的解释。