我正在 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”类型,不能在此通用集合中使用。
参数名称:值
我错过了什么吗?有没有办法使这项工作?
这是我要解决的方法,但它有点像黑客:
<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 绑定到依赖属性,然后在我的 mulitbinding 中将元素绑定到列表框的 ItemsSource。
正如我上面所说,这感觉像是一种 hack,我想知道是否有正确的方法来使用 TemplateBinding 作为组件之一进行 MultiBinding。