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を依存関係プロパティにバインドしてから、マルチバインディングで要素をリストボックスのItemsSourceにバインドします。
上で述べたように、これはハックのように感じます。コンポーネントの1つとしてTemplateBindingを使用してMultiBindingを実行する正しい方法があるかどうかを知りたいと思います。