У WPF ComboBox SelectedIndex и SelectedValue различное поведение в событии SelectionChanged? - PullRequest
1 голос
/ 22 апреля 2010

Я получил этот запуск cbxJobPosition_SelectionChanged, как и ожидалось. Проблема в том, что внешний метод пытается установить cbxJobPosition .

cbxJobPosition объединяется со списком объектов типа JobPosition :

  • JobPositionID: 1, JobPositionName: Manager

  • JobPositionID: 2, JobPositionName: Employee

  • JobPositionID: 3, JobPositionName: третье лицо

Вот XAML:

<ComboBox Cursor="Hand" DataContext="{Binding}" ItemsSource="{Binding}"
FontSize="13" Name="cbxJobPosition"     
SelectedValuePath="JobPositionID" DisplayMemberPath="JobPositionName" 
SelectedIndex="0" Width="233" Height="23" 
SelectionChanged="cbxJobPosition_SelectionChanged" />

В методе UserControl_Loaded он считывает из базы данных список заданий и пытается установить конкретную позицию задания «Третье лицо»:

//calls cbxJobPosition_SelectionChanged and passes the correct SelectedValue within
cbxJobPosition.SelectedIndex = 3;

//calls cbxJobPosition_SelectionChanged and but won't pass the correct SelectedValue within
cbxJobPosition.SelectedValue = "3";

Как вы можете заметить, когда обработка автоматически перенаправляется в cbxJobPosition_SelectionChanged, атрибут SelectedValue будет иметь разные значения для каждого оператора выше при отладке внутри события cbxJobPosition_SelectionChanged.

Кто-нибудь знает, ожидается ли это различие, я что-то упустил или это может быть ошибка?

1 Ответ

0 голосов
/ 22 апреля 2010

Является ли JobPositionID string? Если нет, это может объяснить, почему это не работает. На уровне привязки данных WPF не будет автоматически преобразовывать string в int. Я предполагаю, что это изменяет выбор на поле, когда вы пытаетесь это сделать.

...