【发布时间】:2013-07-02 13:55:42
【问题描述】:
我正在尝试在我的列表框中添加一些样式,创建列表框时它具有一个项目的大小,当鼠标悬停时,它应该增加它的高度以适应 5 个项目,到目前为止一切都很好,但是因为当用户将鼠标移到另一个字段上时它会变得很烦人,所以看到它增长并恢复到原来的大小会很烦人。
所以我决定为这个 ListBox 尝试带有 DoubleAnimation 的 Storyboards。我达到了这个:
<Style TargetType="ListBox">
<Setter Property="VerticalAlignment" Value="Top" />
<Setter Property="Height" Value="20" />
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Disabled" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard BeginTime="0:0:.25">
<DoubleAnimation Storyboard.TargetProperty="Height" From="20" To="85" Duration="0:0:0"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" />
</Trigger>
</Style.Triggers>
</Style>
好的,这行得通。完美,我几乎已经感觉很专业了。但是当我去测试时,我遇到了问题。当鼠标不再悬停时,列表框不会恢复到原来的大小。所以我决定反其道而行之,尝试使用Property="IsMouseOver" Value="False"
切换 From 和 To 值。 ListBox 不会移动。
所以我尝试了一个我在 StackOverflow 中看到的关于 DataTemplate.Triggers 的答案,但得到了相同的结果。
我不知道还有什么可以尝试的,因为我对 WPF 知识的缺乏每次都会妨碍我。
对此有什么好的选择?提前致谢,欢迎随时提出意见。
【问题讨论】:
标签: c# wpf xaml styles storyboard