ListBox SelectedIndex始终为-1

时间:2011-07-14 06:27:32

标签: windows-phone-7 listbox selectedindex

我有一个Listbox,Button和Textblock为ItemTemplate。 Button有onClick个事件。

我想要的只是获取所点击项目的索引,但我的ListBox中的SelectedIndex属性始终为-1!

如何获取所点击项目的索引?

3 个答案:

答案 0 :(得分:2)

问题是Button控件正在吞咽鼠标事件以提供Click行为,因此ListBox从不接收任何事件来告诉它选择已更改。

正如@Alexander建议的那样,您可以使用带有命令的MVVM风格方法来处理视图模型中的操作,并将数据上下文作为参数传递。

或者,您可以将Button替换为任何其他布局控件,并使用Silverlight Toolkit中的手势服务或使用常规MouseLeftButtonUp事件。在任何一种情况下,鼠标事件都会冒泡并启用ListBox来处理选择。

答案 1 :(得分:0)

您可能希望在列表框中实际选择一些内容:p

答案 2 :(得分:0)

如果要获取与当前ListItem关联的数据对象,请使用RouteCommand。这是示例

<ListView.ItemTemplate>
  <DataTemplate>
    <Button Margin="5,0" Command="{StaticResource ButtonCommand}" 
                         CommandParameter="{Binding}">
  </DataTemplate>
<ListView.ItemTemplate>

您还需要至少在ListView.Resources

中定义Command
<RoutedCommand x:Key="ButtonCommand"/>

然后像这样设置CommandBinding

<ListView.CommandBindings>
  <CommandBinding Command="{StaticResource ButtonCommand}" Executed="Button_Click"/>
</ListView.CommandBindings>

最后写处理程序

    Button_Click(object sender, ExecutedRoutedEventArgs e)
    {
        e.Parameter// object that you Specified in CommandParameter
    }

事先你可以使用任何MVVM框架,在模型中定义所有命令和命令逻辑,然后将这些命令绑定到相应的元素。