【问题标题】:Try to catch mouse event in HierarchicalDataTemplate尝试在 HierarchicalDataTemplate 中捕获鼠标事件
【发布时间】:2012-05-12 01:40:24
【问题描述】:

我对 wpf 和这个网站还很陌生。如果我表现出一些错误,请给我一些怜悯。

我的 HierarchicalDataTemplate 是我的树视图项目,由多个组件组成:两个文本块、图像和复选框,以及一些用于布局的堆栈面板。我的 MouseEventHandler 是 TreeViewItem.Selected,它是在用户单击文本框、图像或复选框时捕获的。但是当我点击这些组件之间的微小空间时,它不会触发 TreeViewItem.Selected。

我最初的想法是我可能需要在堆栈面板上指定事件处理程序,该处理程序用于我的 HierarchicalDataTemplate 的布局。但是,即使我专门在堆栈面板上制作了事件处理程序,它也没有引发事件。

你能给我一些指导吗?

ps。我为 IsSelected 属性使用了绑定,但它从未通知更改其属性

【问题讨论】:

    标签: wpf treeview


    【解决方案1】:

    将Background="Transparent" 设置为HierarchicalDataTemplate 内的最顶层布局容器。

    以下 Grid 不会引发 MouseLeftButtonDown 事件:

    <Grid MouseLeftButtonDown="handler" Width="200" Height="200">
    </Grid>
    

    但以下是:

    <Grid MouseLeftButtonDown="handler" Width="200" Height="200" Background="Transparent">
    </Grid>
    

    这是因为在第一种情况下,它没有背景,也没有什么可以引发 MouseLeftButtonDown 事件。因此,仅当用户单击该网格内的某个元素时才会引发该事件。

    【讨论】:

    • 不知道背景属性不能为空(或者可以为空但必须为鼠标事件指定)。非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多