我正在使用列表框,每个项目都是用户控件。
我可以在模拟器中滚动并查看所有项目。但如果我离开鼠标按钮,列表会跳到开头。 这就是模拟器的行为方式吗?或者我有一个错误?我尝试使用滚动查看器,但没有帮助。
<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 :(得分:1)
在ListBox中使用usercontrol存在许多问题。这些包括项目虚拟化的性能和问题,这意味着项目不会显示或显示多次。因此,不建议在列表框中使用usercontrol。
您看到的问题可能与确定实际列表框的高度或每个项目的高度有关。
如果您将用户控件的内容直接移动到项目模板中,这仍然会发生吗?如果确实如此,则表明每个项目的复杂性都会影响物品高度的确定性
如果你只有一个非常简单的itemtemplate(即只是一个文本块),这仍然会发生吗?如果是这样,则表明确定列表框的可用高度存在问题。尝试明确设置列表框的高度以解决此问题。
您还有一个非常复杂的可视化树,其中包含许多嵌套网格。尝试删除其中一些。