バインドされた項目ソースを持つ ComboBox があります...私は例を重要な部分に落としました:
<UserControl x.Class="My.Application.ClientControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:conv="clr-namespace:My.Utilities.Converters"
Name="ClientControl">
<UserControl.Resources>
<ResourceDictionary>
<CollectionViewSource Key="x:ClientsCollection" />
</ResourceDictionary>
<conv:ClientOptions x:Key="ClientOptions" />
</UserControl.Resources>
...
<ComboBox Name="Options"
DataContext="ClientsCollection"
ItemsSource="{Binding [ClientNumber], Converter={StaticResource ClientOptions}" />
</UserControl>
これは機能しますが、「その他...」と呼ばれる代替機能をトリガーする単一の手動項目をコンボボックスに追加したいので、CompositeCollection の使用に移行する必要があります...次のように:
<ComboBox Name="Options"
DataContext="ClientsCollection">
<ComboBox.ItemsSource>
<CompositeCollection>
<CollectionContainer Collection="{Binding [ClientNumber], Converter={StaticResource ClientOptions} />
<ComboBoxItem>Other...</ComboBoxItem>
</CompositeCollection>
</ComboBox>
CompositeCollection を使用すると、バインドされたアイテムが取り込まれません。マニュアルの ComboBoxItem "Other..." のみが表示されます。そのアイテムを削除すると、リストは空になります。コンバーターにブレークポイントをアタッチすると、何もキャッチされません。これは、バインディングが試行されていないことを示しているようです。
CompositeCollection のバインド機能がどのように発生しているかについて、明らかに理解していません。誰かが私の XAML のエラーを確認したり、不足しているものを説明したりできますか?