Почему эта многозадачность не работает

#wpf #wpf-controls

#wpf #wpf-элементы управления

Вопрос:

Я отправил несколько параметров из моей команды Checkbox. Я использовал конвертер. Код приведен ниже. Если я поставлю отладчик и увижу значения, вот мои результаты :

Когда флажок установлен или снят :

В конвертере у него есть значения (массив объекта item и логическое значение). Но когда я перехожу к своему методу, значением является object[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, он показывает мне object[2] в parm, но оба они равны нулю.

Наблюдение: если я привязываю свой командный параметр к любой из привязок, он работает нормально.

Чего мне здесь не хватает?

  • Шанкар

Ответ №1:

У меня была такая же проблема раньше, если я правильно помню, то возврат values.ToList() вместо просто values должен исправить это

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

Комментарии:

1. У меня тоже работает. Мне было бы интересно узнать, почему это работает только так, а не путем возврата массива объектов.