我按预期得到了这个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时,当您在cbxJobPosition_SelectionChanged事件中进行调试时,SelectedValue属性将具有上述每个语句的不同值。
有没有人知道这种差异是否是预期的,我是否遗漏了某些东西或者它可能是一个错误?
答案 0 :(得分:0)
JobPositionID是string
吗?如果没有,这可以解释为什么它不起作用。在数据绑定级别,WPF不会自动将string
转换为int
。我猜它在你尝试时将盒子上的选择改为无。