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

时间:2011-11-21 08:35:50

标签: silverlight listbox controltemplate

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

Automatic Scrolling in a Silverlight List Box描述了滚动到ListBox底部的方法。不幸的是,此方法不适用于带有自定义样式模板的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>

1 个答案:

答案 0 :(得分:2)

您需要保持模板部件的正确命名,这可能只是开始工作。 ScrollViewer应命名为x:Name =“ScrollViewer”。检查

  1. ListBox Styles and Templates
  2. Customizing the Appearance of an Existing Control by Using a ControlTemplate
  3. TemplatePartAttribute