【问题标题】:MouseDoubleClick routed event doesn't fire up in EventTrigger在 EventTrigger 中未触发 MouseDoubleClick 路由事件
【发布时间】: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 上捕获它
  • 但是如果你把它包裹在

标签: c# wpf mvvm


【解决方案1】:

尝试将您的TextBlock 包装在ContentControl 中,然后将MouseDoubleClick 触发器附加到它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多