【发布时间】:2014-10-31 02:48:02
【问题描述】:
我的问题很简单,因为它适用于其他情况,但不适用于双击鼠标事件。我想制作可编辑的选项卡项目,并且几乎完成了。也许代码会清除这种情况:
<StackPanel Orientation="Horizontal">
<TextBox x:Name="HeaderEditMode" Text="{Binding Header, Mode=TwoWay}" Visibility="Collapsed" />
<TextBlock x:Name="HeaderDisplayMode" Text="{Binding Header, Mode=TwoWay}" />
<StackPanel.Triggers>
<EventTrigger RoutedEvent="MouseDoubleClick">
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="HeaderEditMode"
Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Visible}" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="HeaderDisplayMode"
Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Collapsed}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="MouseLeave">
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="HeaderEditMode"
Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Collapsed}" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="HeaderDisplayMode"
Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Visible}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</StackPanel.Triggers>
</StackPanel>
如果您将 MouseDoubleClick 更改为例如 MouseDown 或 MouseEnter,它将完美运行。有什么建议吗?
【问题讨论】:
-
StackPanel不支持MouseDoubleClick事件。它在Control类中实现。你可以做Control.MouseDoubleClick但你仍然需要一些Control来触发这个事件 -
这很有用。好的,我会尝试找到触发这个事件的东西。您可以将其包裹在按钮中,但随后您会丢失我使用的所有样式:/。那就让它透明吧。
-
对不起,我误导了你。刚刚检查,
Control.MouseDoubleClick是直接路由事件,这意味着它仅在Control本身上触发,因此无论如何您都无法在StackPanel上捕获它 -
但是如果你把它包裹在