使用自定义模板在Silverlight列表框中自动滚动



我有ListBox自定义模板,如何以编程方式向下滚动到底部?

Silverlight列表框中的自动滚动描述了滚动到列表框底部的方法。不幸的是,这个方法不适用于自定义样式模板的ListBox。

有没有人成功滚动ListBox自定义样式?

问题代码:

<Grid.Resources>
    <Style x:Key="HorizontalWrapListBox" TargetType="ListBox">
        <Style.Setters>
            <Setter Property="ItemsPanel">
                <Setter.Value>
                    <ItemsPanelTemplate>
                        <toolkit:WrapPanel Orientation="Horizontal" />
                    </ItemsPanelTemplate>
                </Setter.Value>
            </Setter>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ListBox">
                        <ScrollViewer>
                            <ItemsPresenter />
                        </ScrollViewer>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style.Setters>
    </Style>
</Grid.Resources>
<ListBox x:Name="MyListBox" Margin="0,0,-12,0" ItemsSource="{Binding Items}"
         Style="{StaticResource HorizontalWrapListBox}">
    <ListBox.ItemTemplate>
        <DataTemplate>
             <StackPanel Margin="0,0,0,17" Width="432" Height="78">
                 <TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" 
                         Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                 <TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" 
                         Margin="12,-6,12,0" 
                         Style="{StaticResource PhoneTextSubtleStyle}"/>
             </StackPanel>
         </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

您需要保持模板部件的正确命名,这样才可以开始工作。ScrollViewer应该命名为x:Name="ScrollViewer"。检查

  1. 列表框样式和模板,
  2. 使用ControlTemplate自定义现有控件的外观,
  3. TemplatePartAttribute