У меня есть ComboBox, связанный с DataTable. ComboBox отображает список значений, извлеченных из столбца «wellId» DataTable. ComboBox также стилизован так, что я могу вставить пользовательский элемент в список, просто добавив фиктивную строку в DataTable с полем wellId, установленным в «(settings)».
<ComboBox IsEditable="True" Name="comboWell" ItemsSource="{Binding}">
<ComboBox.ItemContainerStyle>
<Style TargetType="{x:Type ComboBoxItem}">
<Setter Property="Content" Value="{Binding wellId}" />
<Style.Triggers>
<DataTrigger Binding="{Binding wellId}" Value="(settings)">
<Setter Property="Content" Value="Customize..." />
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
По большей части это прекрасно работает. Он показывает список, и все элементы (включая элементы-пустышки) можно выбрать в раскрывающемся списке.
Однако после выбора элемента из списка, будь то реальный элемент или фиктивный элемент, ComboBox не показывает выбранный элемент должным образом. Вместо отображения того же значения, которое отображается в раскрывающемся списке (столбец «wellId» из DataTable), вместо этого просто отображается строка « System.Data.DataRowView ». Независимо от того, что я выбираю, всегда отображается одно и то же.
Если я специально установлю DisplayMemberPath на ComboBox на «wellId», тогда он правильно отобразит выбранный элемент. Тем не менее, это портит все другие стили, которые я применил, в результате чего раскрывающийся список заполняется пустыми записями.
Как заставить ComboBox правильно отображать выбранный элемент?