我按預期得到了這個cbxJobPosition_SelectionChanged射擊。問題是當外部方法試圖設置cbxJobPosition。對於SelectionChanged事件,WPF組合框SelectedIndex和SelectedValue有不同的行爲嗎?
cbxJobPosition被databinded與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屬性對於上面的每個語句將具有不同的值。
有沒有人知道這種差異是否預期,我錯過了什麼或它可能是一個錯誤?
JobPositionID是int – 2010-04-22 16:58:43
我想出了用LINQ搜索元素,並使用找到的對象設置組合框的SelectedItem並執行SelectionChanged語句(在外部方法上)。我可能會說我不喜歡這個解決方案。 – 2010-04-22 17:02:36
嗯,我不知道你在做什麼的所有細節,但至少對於這個例子,你可以將「3」解析爲一個int,然後用它來設置SelectedValue。 – RandomEngy 2010-04-22 17:06:35