为什么这种多重绑定不起作用

时间:2011-10-01 00:43:36

标签: wpf wpf-controls

我从Checkbox命令发送了多个参数。我用过转换器。代码如下。如果我放一个调试器,看到这里的值是我的结果:

选中或取消选中复选框时检查:

在转换器中它有teh值(项目对象的数组和布尔值)。但是当我来到我的方法时,值是一个对象[2],但两个值都是NULL

CheckBox 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],但它们都是null。

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

我在这里缺少什么?

  • 香卡

1 个答案:

答案 0 :(得分:5)

之前我遇到过同样的问题,如果我没记错,那么返回values.ToList()而不仅仅是values应该修复它

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