2010-02-10 34 views
0

我有一個ListBox包含CheckBoxes。 XAML看起來是這樣的:WPF:如何綁定到不同的對象?

<ListBox x:Name="lbContactTypes"> 
    <ListBox.ItemTemplate> 
     <HierarchicalDataTemplate> 
      <CheckBox Content="{Binding Path=Description}" IsChecked="{Binding Path=ContactTypes, Converter={x:Static Classes:ListContainsConverter.Instance}, ConverterParameter=1}" /> 
     </HierarchicalDataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

我在代碼綁定的ItemsSource這樣的:

lbContactTypes.ItemsSource = GetLeadContactTypes(); 

到目前爲止好。使用正確的內容生成三個複選框。現在我想將IsChecked屬性設置爲一些其他對象,該對象包含我正在使用的實體的當前數據。

爲了澄清一點,我將窗口的DataContext設置爲Customer對象,其中包含ObservableCollection的ContactTypes,我想將這些ContactTypes綁定到IsChecked屬性,以便複選框屬性檢查。我通過調用返回bool的ListContainsConverter轉換器來檢查ObservableCollection是否包含所需的整數。這可能嗎?

回答

0

我找到了解決方案。我勢必要器isChecked Window.DataContext,所以XAML看起來是這樣的:

<ListBox x:Name="lbContactTypes"> 
    <ListBox.ItemTemplate> 
     <HierarchicalDataTemplate> 
      <CheckBox Content="{Binding Path=Description}" IsChecked="{Binding Path=DataContext.ContactTypes, RelativeSource={RelativeSource AncestorType={x:Type Window}}, Converter={x:Static Classes:ListContainsConverter.Instance}, ConverterParameter=1}" /> 
     </HierarchicalDataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

我還是很想找出一個更好的解決方案存在。讓我知道。