【发布时间】:2011-02-10 05:31:16
【问题描述】:
我们有一个自定义的画布,它具有与标准 MDI 应用程序窗口非常相似的专用节点。期望的行为是,如果“窗口”的任何子控件具有焦点,则称该“窗口”处于活动状态。
现在 IsFocused 属性似乎没有级联,这意味着如果子控件具有焦点,它的容器也没有设置为“focused”,所以我们不能使用它。出于同样的原因,我们不能在容器上设置 IsFocused 属性,因为我认为这会从孩子那里窃取它。
我唯一的想法是创建一个名为 HasChildWithFocus 或类似名称的新 DP,然后在代码隐藏中侦听冒泡事件并设置该标志。不确定这是最好的方法。 (我们可以将其实现为附加属性/附加行为的组合。)
当然,如果我们可以简单地问一个控件“嘿……你或你的孩子有焦点吗?”当然会更好。
你也可以吗?
【问题讨论】:
-
+1 对您对侦听冒泡事件并设置附加属性的附加行为的想法。这是我会做的方式,我想不出任何其他好主意!
-
那么 +1 我的问题!来吧......在这里帮助一个怪胎! [傻笑](感谢您的反馈。是的……这是我能想到的唯一方法。)
标签: wpf focus containers mdichild focusmanager