У меня была похожая проблема, и я попробовал несколько решений, предложенных в этой теме, но обнаружил, что событие SelectionChanged сработало до того, как элемент ComboBox фактически обновился, чтобы показать новый выбор (т. Е. Поэтому он всегда давал содержимое комбинированного списка док происходящему изменению).
Чтобы преодолеть это, я обнаружил, что лучше использовать параметр e, который автоматически передается в обработчик событий, а не пытаться загрузить значение непосредственно из поля со списком.
XAML:
<Window.Resources>
<x:Array x:Key="Combo" Type="sys:String">
<sys:String>Item 1</sys:String>
<sys:String>Item 2</sys:String>
</x:Array>
</Window.Resources>
<Grid>
<ComboBox Name="myCombo" ItemsSource="{StaticResource Combo}" SelectionChanged="ComboBox_SelectionChanged" />
<TextBlock Name="MyTextBlock"></TextBlock>
</Grid>
C #:
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string chosenValue = e.AddedItems[0].ToString();
}