在wpf中滚动列表项

时间:2010-05-09 06:48:20

标签: wpf listbox scroll itemtemplate controltemplates

我想以下图片比文本更好地描述了这个问题...

alt text http://img179.imageshack.us/img179/8949/samplescrollingitems.png

这就是我需要的。

<ListBox x:Name="NamesListBox" ItemsSource="{Binding}">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel x:Name="ItemWrapPanel">
                <WrapPanel.RenderTransform>
                    <TranslateTransform x:Name="ItemWrapPanelTransformation" X="0" />
                </WrapPanel.RenderTransform>
                <WrapPanel.Triggers>
                    <EventTrigger RoutedEvent="WrapPanel.Loaded">
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetName="ItemWrapPanelTransformation" Storyboard.TargetProperty="X" To="-1000" From="{Binding ElementName=ScrollingListItemsWindow, Path=Width}"  Duration="0:0:9" RepeatBehavior="100" />
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger>
                </WrapPanel.Triggers>
            </WrapPanel>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Label Content="{Binding}" />
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

就是我做的。但在这里我不想硬编码-1000的X值,而是我想根据包装板的长度/项数来确定。有人可以帮我吗?

我选择列表框的原因是项目数量可以随时增加和减少,更适合问题。

如果您有任何其他想法,请提出建议。

感谢。

1 个答案:

答案 0 :(得分:1)

在使用转换器时,您是否尝试将X绑定到WrapPanel?

转换器将WrapPanel实例作为参数获取,然后您可以分析其属性并根据项目的宽度或数量返回值。