2013-04-24 50 views
0

我有一個自定義組合框,如果你願意,MultiBinding轉換器在CheckBox.IsChecked不叫

的事情是選擇取決於另一集合multiselectioncombobox。我試圖將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 2013-04-24 09:56:52

+0

你的輸出中是否有綁定錯誤? – Rachel 2013-04-24 12:58:43

回答

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; 
} 

這絕對不是一個希望的解決方案,但,這是不行的,直到我找出其他原因。

相關問題