このcbxJobPosition_SelectionChangedが期待どおりに起動しました。問題は、外部メソッドがcbxJobPositionを設定しようとしたときです。
cbxJobPositionは、JobPositionタイプのオブジェクトのリストとデータバインドされます。
JobPositionID:1、JobPositionName:マネージャー
JobPositionID:2、JobPositionName:従業員
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にリダイレクトされると、cbxJobPosition_SelectionChangedイベント内でデバッグしているときに、SelectedValue属性は上記のステートメントごとに異なる値になります。
この違いが予想されるかどうか誰かが知っていますか、私は何かを逃していますか、それともバグである可能性がありますか?