Windows phone 7 手动选择ListBoxItem

Windows phone 7 手动选择ListBoxItem,windows-phone-7,listboxitem,Windows Phone 7,Listboxitem,我需要能够手动选择WindowsPhone7中的列表框项目。我的列表框包含以下使用 这样我就可以实现包装效果 在WPF中执行此操作时,我订阅了ListBox.ItemContainerGenerator.StatusChanged事件。在该事件的事件处理程序中,我使用了: var obj=ListBox.ItemContainerGenerator.ContainerForItem(objInstance) 作为列表框项目;如果(obj!=null){ obj.IsSelected=true

我需要能够手动选择WindowsPhone7中的列表框项目。我的列表框包含以下使用


这样我就可以实现包装效果

在WPF中执行此操作时,我订阅了ListBox.ItemContainerGenerator.StatusChanged事件。在该事件的事件处理程序中,我使用了:

var obj=ListBox.ItemContainerGenerator.ContainerForItem(objInstance) 作为列表框项目;如果(obj!=null){ obj.IsSelected=true;}

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

  • ListBox.ItemContainerGenerator不再公开StatusChanged事件。取而代之的是一个ItemsChanged事件,所以我处理了这个
  • 但是,当我调用ItemContainerGenerator.ContainerForitem(objInstance)甚至ItemContainerGenerator.ContainerFromIndex()时,我总是得到null
  • 只是补充一下,我已经覆盖了列表框中显示的类的GetHashCode和Equals


    请给我一些想法。

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

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

    2) 为该类创建IsSelected属性

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


    4) 现在,您可以随时更改所创建类的IsSelected属性,一切都会自动进行。

    好主意,谢谢。除非我这样做,XamlParser引发异常。如果在
    中这样做,它将不起作用,因为IsSelected不是ListBox的属性。您必须使用ItemTemplates在实际的ListBox中应用该属性。
    
       <Style TargetType="ListBox">
                            <Setter Property="ItemsPanel">
                                <Setter.Value>
                                    <ItemsPanelTemplate>
                                        <[WP7Panels:WrapPanel][2] />
                                    </ItemsPanelTemplate>
                                </Setter.Value>
                            </Setter>
                            <Setter  Property="ScrollViewer.HorizontalScrollBarVisibility"  Value="Disabled"  />
                        </Style>