我制作这个简单的列表视图(带有示例代码)。我还使用了样式重复按钮。 所以这个列表视图效果很好但是,对于在列表框中滚动对象,它会将整个对象向下或向上滚动:)
所以我想用动画滚动对象,我的意思是滚动对象的一部分而不是整个对象。(或者任何更好的动画)问题是这个怎么做? < ----
这是我的xaml-Code
<Window.Resources>
<ControlTemplate x:Key="ListViewTemplate" TargetType="{x:Type ListView}">
<DockPanel>
<RepeatButton x:Name="UpButton"
DockPanel.Dock="Top"
Width="{TemplateBinding Width}"
Height="12"
Content="Up"
Visibility="Visible"
Command="{x:Static ScrollBar.LineUpCommand}"
CommandTarget="{Binding ElementName=scrollviewer}" Template="{DynamicResource UpRepeatButtonTemplate}"/>
<RepeatButton x:Name="DownButton"
DockPanel.Dock="Bottom"
Width="{TemplateBinding Width}"
Height="12"
Content="Down"
Visibility="Visible"
Command="{x:Static ScrollBar.LineDownCommand}"
CommandTarget="{Binding ElementName=scrollviewer}" Template="{DynamicResource DownRepeatButtonTemplate}"/>
<Border BorderThickness="0" Background="Transparent" Width="{TemplateBinding Width}">
<ScrollViewer x:Name="scrollviewer" HorizontalAlignment="Center" >
<ItemsPresenter />
</ScrollViewer>
</Border>
</DockPanel>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True"/>
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter TargetName="UpButton" Property="Visibility" Value="Visible"/>
<Setter TargetName="DownButton" Property="Visibility" Value="Visible"/>
</MultiTrigger.Setters>
<MultiTrigger.EnterActions>
<BeginStoryboard>
<Storyboard >
<DoubleAnimation Storyboard.TargetName="UpButton"
Storyboard.TargetProperty="Opacity"
To="1"
Duration="0:0:0.5"/>
<DoubleAnimation Storyboard.TargetName="DownButton"
Storyboard.TargetProperty="Opacity"
To="1"
Duration="0:0:0.5"/>
</Storyboard>
</BeginStoryboard>
</MultiTrigger.EnterActions>
<MultiTrigger.ExitActions>
<BeginStoryboard>
<Storyboard >
<DoubleAnimation Storyboard.TargetName="UpButton"
Storyboard.TargetProperty="Opacity"
To="0"
Duration="0:0:0.3"/>
<DoubleAnimation Storyboard.TargetName="DownButton"
Storyboard.TargetProperty="Opacity"
To="0"
Duration="0:0:0.3"/>
</Storyboard>
</BeginStoryboard>
</MultiTrigger.ExitActions>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
<ControlTemplate x:Key="UpRepeatButtonTemplate" TargetType="{x:Type RepeatButton}">
<Border x:Name="border" Margin="0" VerticalAlignment="Bottom" Height="12" BorderBrush="Black" BorderThickness="0" Width="62" CornerRadius="2,2,0,0" >
<Border.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#B2595858" Offset="1"/>
<GradientStop Color="#B2A7A7A7"/>
</LinearGradientBrush>
</Border.Background>
<Path x:Name="path" Fill="White" Stretch="Fill" Stroke="White" HorizontalAlignment="Center" Margin="0,4.75,0,3" Width="4.5" Data="M0,8L32,8 16,0z" VerticalAlignment="Bottom"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Fill" TargetName="path" Value="Orange"/>
<Setter Property="Stroke" TargetName="path" Value="Orange"/>
<Setter Property="Background" TargetName="border">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#E5595858" Offset="1"/>
<GradientStop Color="#E5A7A7A7"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
<ControlTemplate x:Key="DownRepeatButtonTemplate" TargetType="{x:Type RepeatButton}">
<Border x:Name="border" Margin="0" VerticalAlignment="Top" Height="12" BorderBrush="Black" BorderThickness="0" Width="62" CornerRadius="0,0,2,2" >
<Border.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#B2595858" Offset="1"/>
<GradientStop Color="#B2A7A7A7"/>
</LinearGradientBrush>
</Border.Background>
<Path x:Name="path" Fill="White" Stretch="Fill" Stroke="White" HorizontalAlignment="Center" Margin="0,4.75,0,3" VerticalAlignment="Bottom" Width="4.5" Data="M0,0L16,8 32,0z"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Fill" TargetName="path" Value="Orange"/>
<Setter Property="Stroke" TargetName="path" Value="Orange"/>
<Setter Property="Background" TargetName="border">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#E5595858" Offset="1"/>
<GradientStop Color="#E5A7A7A7"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Window.Resources>
<Grid >
<ListView Height="230" Width="auto"
VerticalAlignment="Top"
HorizontalAlignment="Center"
Margin="0 4 0 0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Hidden"
Template="{StaticResource ListViewTemplate}">
<Button Height="30" Width="60" Content="A"/>
<Button Height="30" Width="60" Content="B"/>
<Button Height="30" Width="60" Content="C"/>
<Button Height="30" Width="60" Content="D"/>
<Button Height="30" Width="60" Content="E"/>
<Button Height="30" Width="60" Content="F"/>
<Button Height="30" Width="60" Content="G"/>
<Button Height="30" Width="60" Content="H"/>
<Button Height="30" Width="60" Content="I"/>
<Button Height="30" Width="60" Content="J"/>
<Button Height="30" Width="60" Content="K"/>
<Button Height="30" Width="60" Content="L"/>
<Button Height="30" Width="60" Content="M"/>
<Button Height="30" Width="60" Content="N"/>
<Button Height="30" Width="60" Content="O"/>
<Button Height="30" Width="60" Content="P"/>
</ListView>
</Grid>