Это только предположение, но когда вы используете SelectedItem
и SelectedIndex
, вы создаете зависимость от реализации WPF: "кто победит?" это вещь реализации. Даже если это где-то задокументировано, это будет означать, что каждый разработчик знает порядок (что тоже не хорошо, потому что вы никогда не знаете, кто будет поддерживать ваш код).
Я думаю, что самое простое, что вы можете здесь сделать, это использовать одну привязку к свойству ViewModel
*1005* и позволить ViewModel
вычислить значение на основе color_master
. Таким образом, конечный результат будет выглядеть так:
<ComboBox SelectedIndex="{Binding MyObjectViewModel.SelectedColorIndex, Mode=TwoWay}"
ItemsSource="{Binding MyEntities.color_master}"
DislayMemberPath="COLOR_DESCRIPTION" >
</ComboBox>
Обновление: Поскольку вы сказали, что к вашей модели вида нельзя прикоснуться, вот еще один вариант. Напишите свой собственный IValueConverter, который возьмет MyObject.color_master
и преобразует его в индекс:
<ComboBox SelectedIndex="{Binding MyObject.color_master, Mode=TwoWay, Converter={StaticResouce ColorMasterToIndexConverter}}"
ItemsSource="{Binding MyEntities.color_master}"
DislayMemberPath="COLOR_DESCRIPTION" >
</ComboBox>
Где ColorMasterToIndexConverter
определено в диктонаре доступных ресурсов (например, в той же коллекции UserControl.Resources
).