列表框滚动和事件处理程序问题,Windows phone 7



所以在解决了一个关于列表框的问题之后,我又面临另一个问题。

我有一个包含多个项目的列表框。在这些项目上,我有一个事件处理程序来知道人们何时选择了该项目。这是一个简单的MouseLeftButtonDown事件处理程序。然而,当我试图滚动列表框时,我不能,因为当我把手指放下时,事件就会触发。

总之,当我有事件处理程序检测用户是否选择了列表框中的特定项时,我如何去制作一个可滚动的列表框?

一些代码来显示页面上的内容:

<Grid x:Name="LayoutRoot">
    <controls:Panorama x:Name="Community" Title="Community">
        <!--Panorama item one-->
        <controls:PanoramaItem x:Name="Groups" Header="Groups">
            <ListBox x:Name="People" Margin="0,0,-12,0" SelectionChanged="StackPanel_SelectionChanged">
               <ListBoxItem x:Name="Peter">
                    <StackPanel Orientation="Horizontal" Margin="0,0,0,17">
                        <Image Height="100" Width="100" Source="/image002.jpg" Margin="12,0,9,0" Stretch="Fill" />
                        <StackPanel Width="311">
                            <TextBlock Text="Peter"  TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                        </StackPanel>
                    </StackPanel>
            </ListBoxItem>
       .....
       //more of the same stackpanels as listed above, just with different Names

如果你可以想象一排这样的堆栈面板,你怎么能使它这样,你可以自由地滚动他们?

MouseLeftButtonUp……它并不完美。请告诉我这不是唯一的办法。是否有一个简单的修复,比如放置一个覆盖的网格或滚动查看器,或者我不需要为此操作启动/完成事件的地方?

帮助!(

您可以使用SelectionChanged事件。只需注意,它只会在用户选择当前未选中的项时触发。如果您只是在选定后导航到另一个页面,这可能不是问题,但如果需要,您总是可以使用listbox.SelectedItem = -1(在事件触发后)重置选择值。

编辑:来自注释的代码请求:因此,设置事件以触发此处理程序(与设置LeftMouseUp事件的方式相同):
private void myListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
   //your handler code (I've used code from your previous question)
   var namers="";
   var lbi = sender as ListBoxItem;
   if(lbi != null)
   {
       namers= lbi.Name.ToString();

       //Although optional, it might be worth resetting the selection value 
       //as long as you don't need the value anymore
       myListBox.SelectedItem = -1;
       //Navigate to the next page
       NavigationService.Navigate(new Uri("/Page2.xaml?name=" + namers, UriKind.Relative));
    }
}

相关内容

  • 没有找到相关文章

最新更新