Мне нужен ComboBox с постоянным элементом "Не выбрано", который означает, что SelectedValue равно null.
При этом источники данных могут быть различных типов. Будь то List<MyClass> или List<int>.
Пока что ничего более или менее разумного в голову не приходит. Из неразумного - создать новые коллекции из существующих с первым значением null и использовать их, но что то мне подсказывает, что это лажа.
Можно сделать так:
1) Создаем в ресурсах коллекцию, которая привязана к вашим реальным данным:
<Window.Resources>
<CollectionViewSource x:Key="MyKey" Source="{Binding Path=MyData}" />
</Window.Resources>
2) Далее у ComboBox в качестве ItemsSource используем CompositeCollection, выглядит это следующим образом:
<ComboBox>
<ComboBox.ItemsSource>
<CompositeCollection>
<ComboBoxItem Content="Не выбрано" />
<CollectionContainer Collection="{Binding Source={StaticResource MyKey}}" />
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
Сборка персонального компьютера от Artline: умный выбор для современных пользователей