我们有一个自定义画布,其中有一些特殊的节点,行为很像标准 MDI 应用程序的窗口。期望的行为是,如果“窗口”的任何子控件具有焦点,则该“窗口”被认为是活动的。
现在,IsFocused 属性似乎不会级联,这意味着如果子控件具有焦点,则其容器也不会被设置为“已聚焦”,因此我们不能使用它。出于同样的原因,我们也不能在容器上设置 IsFocused 属性,因为我认为那会从子控件那里夺走它。
我唯一想到的办法是创建一个名为 HasChildWithFocus 的新 DP,然后在代码后台中,监听冒泡事件并设置该标志。不确定是否这是最好的方式。(我们可能将其实现为组合附加属性/附加行为的方式。)
但当然,如果我们能简单地询问一个控件“嘿...你或你的任何子控件都拥有焦点吗?”那就好多了。
所以,你能吗?
现在,IsFocused 属性似乎不会级联,这意味着如果子控件具有焦点,则其容器也不会被设置为“已聚焦”,因此我们不能使用它。出于同样的原因,我们也不能在容器上设置 IsFocused 属性,因为我认为那会从子控件那里夺走它。
我唯一想到的办法是创建一个名为 HasChildWithFocus 的新 DP,然后在代码后台中,监听冒泡事件并设置该标志。不确定是否这是最好的方式。(我们可能将其实现为组合附加属性/附加行为的方式。)
但当然,如果我们能简单地询问一个控件“嘿...你或你的任何子控件都拥有焦点吗?”那就好多了。
所以,你能吗?