2015-08-08 7 views
0

У меня есть следующие ресурсы определены в ListView:Создания ComboBoxItem от статического ресурса

<local:FillPatternDefinition x:Key="deleteItem" TypeName="Delete Regions" ItsId="-1"/> 

и выпадающий список, размещенном в ListView определил так:

<ComboBox 
     Name="changeComboBox" 
     Width="100" 
     DisplayMemberPath="TypeName" 
     <ComboBox.ItemsSource> 
      <CompositeCollection> 
       <ComboBoxItem Foreground="Black" Background="Salmon" Content="{StaticResource deleteItem}"/> 
       <CollectionContainer Collection="{Binding Source={StaticResource theComboBoxDataView}}" /> 
      </CompositeCollection> 
     </ComboBox.ItemsSource> 
</ComboBox> 

Проблема заключается в comboxitem в составной коллекции. В раскрывающемся списке я вижу имя класса (FillPatternDefinition), но когда я его выбираю, TypeName «Удалить регионы» отображается правильно в поле со списком. Коллекционный контейнер содержит один и тот же класс предметов, но все предметы появляются и работают нормально.

Нужно ли обертывать статический ресурс в каком-то другом классе, чтобы заставить его работать прямо в выпадающем списке?

ответ

0

Вы не должны явно создавать ComboBoxItem в CompositeCollection, поскольку ComboBox внутренне создает ComboBoxItems для каждого элемента в своей коллекции ItemsSource. Используйте StaticResource вместо:

<ComboBox.ItemsSource> 
    <CompositeCollection> 
     <StaticResourceExtension ResourceKey="deleteItem"/> 
     <CollectionContainer 
      Collection="{Binding Source={StaticResource theComboBoxDataView}}" /> 
    </CompositeCollection> 
</ComboBox.ItemsSource> 

Foreground Установка и Background первого элемента может быть сделано в ItemContainerStyle в ComboBox.

Смежные вопросы