【问题标题】:How to cast a ListBoxItem to the class bound to the list?如何将 ListBoxItem 强制转换为绑定到列表的类?
【发布时间】:2011-08-04 12:23:06
【问题描述】:

我有一个 ListBox,其中包含绑定到类 Buddy {String name; 的好友列表字符串消息}

当用户点击一个项目时,我通过处理 PreviewMouseDown 事件获得点击的项目:

var item = ItemsControl.ContainerFromElement(lb, e.OriginalSource as DependencyObject) as ListBoxItem;

问题是我无法将项目转换为好友项目:如果我尝试使用

Buddy b=(Buddy)item

我收到一个错误,例如无法将类型 ListBoxItem 转换为 Buddy

我怎样才能投到 Buddy 班级?

【问题讨论】:

    标签: wpf listboxitem


    【解决方案1】:

    其实应该是……

    Buddy b = (Buddy)item.DataContext;
    

    这有帮助吗?

    【讨论】:

    • 太棒了!这就是解决方案!
    【解决方案2】:

    ListBox 项上的 DataContext 属性将是该项绑定到的好友。改用这个。

    Buddy b=(Buddy)(item.DataContext);
    

    【讨论】:

      【解决方案3】:

      这是访问项目(和使用 WPF)的错误方式。您应该处理 SelectionChanged 事件,然后将 SelectedItem 转换为 Buddy 类型。这就是选择中涉及的对象。

      【讨论】:

      • 我使用了SelectionChanged,问题是即使它已经被选中,我也需要处理点击该项目。
      • 好的,当 PreviewMouseDown 被触发时,在处理程序上执行与触发 SelectionChanged 相同的操作。 SelectedItem 仍然给出实际项目。
      猜你喜欢
      • 2017-05-07
      • 1970-01-01
      • 2012-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多