列表框滚动跳转开始

时间:2011-06-07 08:09:52

标签: silverlight xaml windows-phone-7

我正在使用列表框,每个项目都是用户控件。

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

<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>

1 个答案:

答案 0 :(得分:1)

在ListBox中使用usercontrol存在许多问题。这些包括项目虚拟化的性能和问题,这意味着项目不会显示或显示多次。因此,不建议在列表框中使用usercontrol。

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

您还有一个非常复杂的可视化树,其中包含许多嵌套网格。尝试删除其中一些。