我想在我的视图中控制哪个按钮聚焦。用户必须能够执行作业而无需使用鼠标。工作正在经历所有因素。根据元素,会出现一些按钮,有些会消失。
我可以使用依赖属性来完成它。例如,如果有按钮上一个和下一个,那么我可以提供IsPreviousFocused
和IsNextFocused
在特定事件后设置焦点。事件可以是:第一次显示窗口(某些东西应该具有焦点),达到1个元素(隐藏上一个按钮,设置IsNextFocused
),到达最后一个元素(相反)等。
这看起来或多或少是合理的。
但是,如果我有10个按钮(不同的操作),那么所有这些按钮都必须具有依赖属性!
所以我在考虑更简单的方法:当我隐藏按钮时,会有没有焦点
if(FocusManager.FocusedElement == null) { ... }
如果我能检测到,当没有焦点时,我可以尝试以某种方式将其设置为其中一个按钮。这样,我真的不需要任何复杂的焦点管理
问题是:如何在MVVM场景中处理FocusManager.FocusedElement
?如何检测何时没有焦点(当第一次显示窗口,单击某个按钮并变得不可见时等)?
P.S。:我实际上讨厌制造另一项技术而没有充分考虑它;焦点是非常基本的功能(并且每个人都在其软件中关心),但没有直接的支持(在xaml中);看起来像“哦,它太复杂了,让我们跳过它”解决方案。