2011-10-01 49 views
7

我从我的复选框命令发送了多个参数。我已经使用了一个转换器。代码如下。如果我把一个调试器,看看这里的值是我的结果:为什么这个多重绑定不起作用

当复选框检查选中或未unchekcked:

在有TEH值(项目目标和布尔数组)的转换器。但是,当我来我的方法,所述值是一个目的[2]但是两个值都为NULL

复选框XAML

<CheckBox x:Name="checkBox" 
       Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content.Data.Label}" 
       ClickMode="Release" 
       Command="{Binding Path=DataContext.SelectUnSelect}"> 
     <CheckBox.CommandParameter> 
      <MultiBinding Converter="{StaticResource SelectedItemConverter}"> 
       <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Content.Data"/> 
       <Binding RelativeSource="{RelativeSource Self}" Path="IsChecked"/> 
      </MultiBinding> 
     </CheckBox.CommandParameter> 

转换器:

public class CheckConverter : 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(); 
    } 
} 

查看模型命令代码:

public ICommand SelectUnSelect 
    { 
     get { return new RelayCommand<object>(parm => this.SelectAndUnSelect(parm));} 
    } 

如果我把一个调试器放在SelectAndUnSelect方法中,它会在parm中显示对象[2],但它们都是空的。

观察:如果我将我的命令参数绑定到任何一个绑定,它都可以正常工作。

我在这里失踪了什么?

  • 桑卡

回答

5

我以前有同样的问题,如果我没有记错然后返回values.ToList(),而不是仅仅values应该修复它

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

这工作。不知道为什么它不能提前工作。 – Shankar

+0

也适用于我。我很想知道它为什么只能这样工作,而不是通过返回对象数组。 – csteinmueller