У меня есть ComboBox, который имеет связанный источник пунктов ... Я раздели мой пример вниз ключевых элементов:Как преобразовать ComboBox для использования связанного CompositeCollection?
<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>
Это работает, но теперь я хочу, чтобы добавить один ручной элемент в мой выпадающий список которые будут вызывать альтернативную функцию, называемую «Other ...», так что я, чтобы двигаться к использованию CompositeCollection ... как так:
<ComboBox Name="Options"
DataContext="ClientsCollection">
<ComboBox.ItemsSource>
<CompositeCollection>
<CollectionContainer Collection="{Binding [ClientNumber], Converter={StaticResource ClientOptions} />
<ComboBoxItem>Other...</ComboBoxItem>
</CompositeCollection>
</ComboBox>
Try как я мог, то связанные элементы просто не заполнять, если используя CompositeCollection. Он показывает только ручной ComboBoxItem «Другое ...». Если я удалю этот элемент, список пуст. Если я привяжу точку останова к конвертеру, он ничего не поймает, что указывает на то, что привязка даже не пыталась.
Я, очевидно, не понимаю, как происходит функция привязки в CompositeCollection. Может ли кто-нибудь увидеть ошибку в моем XAML или объяснить, что мне не хватает?
Можете ли вы сформулировать свой ответ немного ... если я переведу его в раздел «Ресурсы» и задаю свой ItemSource = {Binding Source = {StaticResource ...}}, как мне установить контекст моего CollectionContainer? – BobTheBuilder
см. Мой отредактированный ответ ... – hbarck
Итак ... мой ComboBox в настоящее время связан с контекстом данных ... мой ClientsCollection; мой ComboBox.ItemsSource привязан к списку параметров, которые будут меняться в зависимости от выбранного в настоящий момент клиента в моем ClientsCollection. Где я могу определить эту взаимосвязь [контекст]? В ресурсах или со списках? Можете ли вы опубликовать фрагмент кода для уточнения? – BobTheBuilder