我正在WPF中制作自定义控件。我仍在学习TemplateBinding的各个方面(在自定义控件中经常使用)。
我注意到的一件事是,似乎无法在MulitBinding中使用TemplateBinding。
当我尝试这样做时:
<ComboBox.ItemsSource>
<MultiBinding Converter="{StaticResource MyMultiConverter}">
<Binding ElementName="PART_AComboBox" Path="SelectedItem"/>
<TemplateBinding Property="MyListOne"/>
<TemplateBinding Property="MyListTwo"/>
</MultiBinding>
</ComboBox.ItemsSource>
我收到了这个错误:
该值“System.Windows.TemplateBindingExpression”不属于“System.Windows.Data.BindingBase”类型,并且无法在此通用集合中使用。
参数名: value
我有什么遗漏吗?有方法可以使它正常工作吗?
这是我现在使用的解决方法,但它有点取巧:
<ListBox x:Name="ListOne"
ItemsSource="{TemplateBinding MyListOne}"
Visibility="Collapsed" />
<ListBox x:Name="ListTwo"
ItemsSource="{TemplateBinding MyListTwo}"
Visibility="Collapsed" />
<ComboBox.ItemsSource>
<MultiBinding Converter="{StaticResource DictionaryFilteredToKeysConverter}">
<Binding ElementName="PART_TextTemplateAreasHost" Path="SelectedItem"/>
<Binding ElementName="ListOne" Path="ItemsSource"/>
<Binding ElementName="ListTwo" Path="ItemsSource"/>
</MultiBinding>
</ComboBox.ItemsSource>
我将ListBoxes绑定到依赖属性,然后在我的多重绑定中对ListBoxes的ItemsSource进行元素绑定。
正如我上面所说,这感觉像一个hack,我想知道是否有一种正确的方法来使用TemplateBinding作为其中一个组件的MultiBinding。