2011-06-07 74 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