2011-06-07 76 views
0

我使用的是列表框,每个项目都是用户控件。listbox滚动跳转到开始

我可以在模拟器中滚动并查看所有项目。但如果我离开鼠标按钮,则列表跳转到开头。 这是模拟器如何行为?或者我有一个错误?我尝试使用滚动查看器,但它没有帮助。

<Grid x:Name="LayoutRoot" Background="{StaticResource PhoneBackgroundBrush}"> 
    <ListBox Name="actionsListBox" VerticalAlignment="Top" ItemsSource="{Binding Path=Actions}" BorderThickness="1"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <Grid> 
        <commonWPControls:MetadataView DataContext="{Binding}" ButtonClick="MetadataView_ButtonClick" /> 
       </Grid> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
</Grid> 

和用户控制是这样的:

<Grid x:Name="LayoutRoot" Background="Transparent"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="100"></ColumnDefinition> 
     <ColumnDefinition Width="*"></ColumnDefinition> 
    </Grid.ColumnDefinitions> 
    <Button DataContext="{Binding}" Grid.Column="0" Width="100" Height="100" Click="Button_Click" BorderThickness="0"> 
     <Button.Background> 
      <SolidColorBrush Color="{StaticResource PhoneAccentColor}"/> 
     </Button.Background> 
    <Image x:Name="pictureImage" Source="{Binding Path=Picture}" /> 
    </Button> 
    <StackPanel VerticalAlignment="Center" Grid.Column="1" > 
     <TextBlock Text="{Binding Name}" Style="{StaticResource PhoneTextTitle2Style}" VerticalAlignment="Top" /> 
     <TextBlock Text="{Binding Description}" VerticalAlignment="Top" Style="{StaticResource PhoneTextNormalStyle}"/> 
    </StackPanel> 
</Grid> 
+0

不能说我见过这个问题,你有多少物品在列表中?另外我很好奇你为什么在几个地方DataContext =“{Binding}”'这样做。看起来对我来说太过分了,当你删除这些作业时,会不会做些事情呢? – AnthonyWJones 2011-06-07 08:50:47

回答

1

有许多与使用列表框内部的用户控件的问题。这些包括项目虚拟化的性能和问题,其中cna表示项目不显示或不止一次显示。为此,不建议在列表框中使用usercontrols。

您看到的问题可能与确定实际列表框的高度或每个项目的高度有关。
如果您将用户控件的内容直接移动到项目模板中,这是否仍然会发生?如果确实如此,那么它会指出影响物品高度的确定的每个物品的复杂性的问题。
如果你只是有一个非常简单的itemtemplate(即只是一个文本块),这是否仍然会发生?如果是这样,这将表明确定列表框的可用高度的问题。尝试明确设置列表框的高度来解决此问题。

你也有一个非常复杂的视觉树,有很多嵌套的网格。尝试删除其中的一些。

+0

设定的高度!谢谢 – Ido 2011-06-07 10:00:21