【问题标题】:Do WPF ComboBox SelectedIndex and SelectedValue have different behavior on SelectionChanged event?WPF ComboBox SelectedIndex 和 SelectedValue 在 SelectionChanged 事件上有不同的行为吗?
【发布时间】:2011-02-11 03:56:21
【问题描述】:

我按预期触发了这个 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 属性将具有不同的值。

有谁知道这种差异是否在意料之中,是我遗漏了什么还是可能是一个错误?

【问题讨论】:

    标签: wpf combobox selectedvalue selectedindex selectionchanged


    【解决方案1】:

    JobPositionID 是 string 吗?如果不是,那可以解释为什么它不起作用。在数据绑定级别,WPF 不会自动将string 转换为int。我猜它会在您尝试时将框上的选择更改为无。

    【讨论】:

    • 我想出了用 LINQ 搜索元素并使用找到的对象设置组合框的 SelectedItem 并执行 SelectionChanged 语句(在外部方法上)。我可能会说我不喜欢这个解决方案。
    • 好吧,我不知道你在做什么的所有细节,但至少对于这个例子,你可以将“3”解析成一个 int,然后用它来设置 SelectedValue。跨度>
    • 是的。我将类似 3 的 int 传递给 cbxJobPosition.SelectedValue = 3;当重定向到 cbxJobPosition_SelectionChanged 时,cbxJobPosition.SelectedValue 为空!很奇怪!
    • (e.Source as ComboBox) 和 (e.OriginalSource as ComboBox).SelectedValue 也为空
    • 哦,我的错。将“3”作为字符串传递应该可以正常工作。看起来您遇到了这个错误:stackoverflow.com/questions/247413/…。简而言之,SelectedValue 只适用于 get 操作,而不适用于 set。
    猜你喜欢
    • 1970-01-01
    • 2021-03-17
    • 2018-02-14
    • 2014-05-02
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2013-10-22
    • 2012-01-29
    相关资源
    最近更新 更多