问题
I guess the following picture depicts the problem better than texts...
alt text http://img179.imageshack.us/img179/8949/samplescrollingitems.png
That is what I need.
<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>
is what I did. But here I don't wanna hard code -1000 for the X value, rather I want to determine this based on the length of the wrap panel/number of items. Can somebody help me with this ??
Reason why I choose list box is that the number of items can increase and decrease at any time and suits the problem better.
If you have got any other idea, please suggest it too.
Thanks.
回答1:
Have you tried to bind X to the WrapPanel, while using a converter ?
The converter will get the WrapPanel instance as a parameter and you can then analyze its properties and return a value based on the width or number of items.
来源:https://stackoverflow.com/questions/2796861/scrolling-list-items-in-wpf