Wpf UserControl作为ListBoxItem和IsSelected
我有一个usercontrol,我想用作ListBoxItemWpf UserControl作为ListBoxItem和IsSelected,wpf,xaml,expression-blend,Wpf,Xaml,Expression Blend,我有一个usercontrol,我想用作ListBoxItem <ListBox.ItemTemplate> <DataTemplate> <local:MyUserControl/> </DataTemplate> </ListBox.ItemTemplate> 我想在未选中usercontrol时播放情节提要 <UserControl.Resources> <
<ListBox.ItemTemplate>
<DataTemplate>
<local:MyUserControl/>
</DataTemplate>
</ListBox.ItemTemplate>
我想在未选中usercontrol时播放情节提要
<UserControl.Resources>
<Style TargetType="{x:Type UserControl}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}, Mode=FindAncestor}}" Value="False">
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource OnMouseLeaveSB}"/>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
但故事板永远不会开火。有更好的方法吗
编辑以添加:
我真正想做的是:
当鼠标在UserControl上时,我想播放一个故事板(OnMouseEnterSB)。当鼠标离开UserControl时,我想播放另一个故事板(OnMouseLeaveSB)。这一切我都做得很好
但是,当选中UserControl并且鼠标离开时,我不想玩故事板
最后,当取消选中UserControl时,我想播放OnMouseLeaveSB情节提要 我没有WPF经验,我是一个Silverlight女孩,在Silverlight中,您描述的东西被称为“VisualStateManager”(刚刚开始,WPF中也提供了它) 使用VSM,您可以为(用户)控件的每个“状态”(鼠标悬停、鼠标悬停、正常)定义不同的视觉外观,还可以根据上一个和/或下一个状态定义这些状态之间的不同转换(或者您可以使用默认转换在所有不同状态之间移动) 阅读Tim Heuer的博客文章。用许多截图很好地描述了它:)。你可能还想看看这个
使用VSM,状态和动画是控件的一部分,而不是具有一系列事件处理程序和animation.Begin()调用的应用程序。我非常喜欢并推荐它:)如果我正确理解您的问题,当任何ListViewItem失去选择时,您希望播放此动画“OnMouseLeaveSB”。但在触发器中,您正在播放所有未选定项的动画。因此,即使这样做有效,它也不会是你想要的 故事板不启动的原因是默认的BlueHighlight隐藏了动画。解决这个问题的一个方法是设置边框颜色,这里解释了这一点 要实现您想要的,您必须在Trigger.ExitActions中插入故事板,并使用IsSelected值“True”
如果您不着急,也可以看看VSM。谢谢您的回答。我忘了说,我实际上已经注意到了边框的颜色和一切。问题更多的是事件的顺序,以及控制哪一个在哪个时间播放。VSM正是我需要的谢谢。VSM正是我所需要的。我见过它几次,但从来没有注意过它到底是什么。你是如何在你的
UserControl
中获得IsSelected
属性的,你能帮我吗