2013-04-24 1 views
0

У меня есть пользовательский выпадающий multiselectioncombobox если вы будете,MultiBinding конвертер в CheckBox.IsChecked не называется

вещью является выбор зависит от другой коллекции. Я попытался связать свойство ComboBox.IsChecked с MultiBinding Converter, но конвертер не вызывается.

<DataTemplate> 
<StackPanel Orientation="Horizontal" x:Name="ItemStack" VirtualizingStackPanel.IsVirtualizing="False"> 
    <CheckBox x:Name="CheckBoxItem" 
     Command="{Binding SelectItem, RelativeSource={RelativeSource AncestorType={x:Type MultiSelectionComboBox}}}" 
     CommandParameter="{Binding Key}" 
       > 
     <CheckBox.IsChecked> 
      <MultiBinding Converter="{StaticResource MultiSelectionCommandConverter}" Mode="OneWay"> 
       <Binding Path="Key"/> 
       <Binding Path="SelectedItem" 
         RelativeSource="{RelativeSource AncestorType={x:Type MultiSelectionComboBox}}" /> 
      </MultiBinding> 
     </CheckBox.IsChecked> 
    </CheckBox> 
    <TextBlock Text="{Binding DisplayText}"></TextBlock> 
</StackPanel> 
</DataTemplate> 

и конвертер,

public class MultiSelectionCommandConverter : IMultiValueConverter 
{  
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 
    { 
      ///stuff to do... 
    } 

    public object[] ConvertBack(object values, Type[] targetTypes, object parameter, CultureInfo culture) 
    { 
     return null; 
    } 
} 

какие-либо предложения?

+0

Можете ли вы показать полный xaml выпадающего списка? – user1064519

+0

Вы получаете какие-либо ошибки привязки в своем выходе? – Rachel

ответ

0

После проверки возможностей я нашел работу. Тем не менее я не совсем уверен, почему это может сработать, а другое - нет.

Я изменил свой xaml, чтобы передать весь объект вместо свойства. Таким образом, код выглядел это понравилось,

<DataTemplate> 
<StackPanel Orientation="Horizontal" x:Name="ItemStack" VirtualizingStackPanel.IsVirtualizing="False"> 
    <CheckBox x:Name="CheckBoxItem" 
     Command="{Binding SelectItem, RelativeSource={RelativeSource AncestorType={x:Type MultiSelectionComboBox}}}" 
     CommandParameter="{Binding Key}" 
       > 
     <CheckBox.IsChecked> 
      <MultiBinding Converter="{StaticResource MultiSelectionCommandConverter}" Mode="OneWay"> 
       <Binding Path="Key"/> 
       <Binding 
         RelativeSource="{RelativeSource AncestorType={x:Type MultiSelectionComboBox}}" /> 
      </MultiBinding> 
     </CheckBox.IsChecked> 
    </CheckBox> 
    <TextBlock Text="{Binding DisplayText}"></TextBlock> 
</StackPanel> 
</DataTemplate> 

и конвертер

public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 
{ 
    string key = (string)values[0]; 
    ObservableCollection<ListItem> selectedItems = (values[1] as MultiSelectionComboBox).SelectedItem; 
    //do stuff 
    return false; 
} 

Это, безусловно, не является искомым решением, но это будет делать, пока я не выяснить другую причину.

Смежные вопросы