WPF矩形没有点击事件。

25

看起来 WPF 的 矩形(Rectangle) 形状没有定义 Click 事件。那么我该使用什么替代方法呢?

虽然它具有 MouseUp,但行为不完全相同。

4个回答

33

如果您对 MouseDownMouseUp 不满意,也许您可以将 Rectangle 放入一个 Button 中,并处理该 ButtonClick 事件?

<Button>
    <Button.Template>
        <ControlTemplate>
            <Rectangle .../>
        </ControlTemplate>
    </Button.Template>
</Button>

这实际上取决于您想要的行为。 如有需要,请详细说明。


这可能是我想要的。 - sourcenouveau

28

如果要向一个矩形本身添加点击处理,可以使用InputBindings属性:

<Rectangle Fill="Blue" Stroke="Black">
    <Rectangle.InputBindings>
        <MouseBinding Gesture="LeftClick" Command="{Binding FooCommand}"/>
    </Rectangle.InputBindings>
</Rectangle>

当矩形被点击时,这将导致FooCommand被执行。如果你正在使用MVVM,它非常方便!


它在.NET 3.5中可用:http://msdn.microsoft.com/zh-cn/library/system.windows.uielement.inputbindings(v=VS.90).aspx - Grokys
1
这个答案在.NET 3.5中不起作用,只适用于.NET 4及更高版本。在.NET 3.5中,Command属性未注册为依赖属性,因此无法将其设置为绑定。请参见我的问题:https://dev59.com/8knSa4cB1Zd3GeqPNFzb - sourcenouveau

5
我正在寻找相关的DoubleClick事件,并偶然发现这个建议,只需将感兴趣的对象嵌入到ContentControl中即可。
以下是他们的示例(带有边框,同样不支持单击/双击)。
<ContentControl MouseDoubleClick="OnDoubleClick">
    <Border Margin="10" BorderBrush="Black" BorderThickness="2">
        <Grid Margin="4">
            <Rectangle Fill="Red" />
            <TextBlock Text="Hello" FontSize="15" />
        </Grid>
    </Border>
</ContentControl>

-1

矩形有事件Tapped,它可以正常工作。在设计Windows 8.1通用应用程序时,有新的事件。Tapped、DoubleTaped、RightTapped和Holding。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接