首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >手动选择ListBoxItem

手动选择ListBoxItem
EN

Stack Overflow用户
提问于 2012-01-17 22:53:10
回答 1查看 232关注 0票数 0

我需要能够在Windows 7中手动选择ListBox项。

代码语言:javascript
复制
   <Style TargetType="ListBox">
                        <Setter Property="ItemsPanel">
                            <Setter.Value>
                                <ItemsPanelTemplate>
                                    <[WP7Panels:WrapPanel][2] />
                                </ItemsPanelTemplate>
                            </Setter.Value>
                        </Setter>
                        <Setter  Property="ScrollViewer.HorizontalScrollBarVisibility"  Value="Disabled"  />
                    </Style>

这样我才能意识到包裹的效果。

当我在WPF中这样做时,我订阅了ListBox.ItemContainerGenerator.StatusChanged事件。在此事件的事件处理程序中,我使用:

var obj = ListBox.ItemContainerGenerator.ContainerForItem(objInstance)作为ListBoxItem;if (obj != null) { obj.IsSelected= true;}

我试图为WP7做同样的事情,并注意到:

  1. ListBox.ItemContainerGenerator不再公开StatusChanged事件。相反,有一个ItemsChanged事件,因此我处理了这个事件。
  2. 但是,当我调用ItemContainerGenerator.ContainerForitem(objInstance)甚至ItemContainerGenerator.ContainerFromIndex()时,我总是得到null。

补充一下,在列表框中显示的类中,我已经超过了GetHashCode和等号。

请给我点主意。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-17 23:04:47

我不确定这是否是最好的方法,但我会这样做:

1)创建继承INotifyPropertyChanged接口的类(您可以通过Google轻松找到如何使用它)。将您在该类中放入ListBox中的信息包装起来。

2)为该类创建一个IsSelected属性。

3)将类的IsSelected属性绑定到ListBox的项的IsSelected属性。

4)现在,您可以随时更改您所创建的类的IsSelected属性,并且一切自行发生。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8902838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档