问题标签 [focusmanager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wpf - WPF FocusManager 干扰焦点
我有一个网格,在网格中我将我的第一个元素设置为焦点:
当窗口打开时,正确的控件被聚焦。
但是,如果我通过整个表单进行选项卡,当上面的焦点字段应该具有焦点时,窗口上的任何地方都没有明显的光标。
如果我再次点击选项卡,它会在应该选择的控件之后选择控件。
如果我从我的网格中完全删除 focumanager 属性,我会以正确的顺序正确地在我的所有控件中切换。
更奇怪的是,如果我离开 focusmanager 属性并首先单击第一个文本框,然后关注整个表单,那么它会像任何其他控件一样选择我的文本框。
如果您有任何想法,我会很乐意提供帮助。
谢谢
wpf - Xamly 将键盘焦点设置为 DataGridTemplateColumn 单元格中的元素?
我在 DataGridTemplateColumn.CellEditing DataTemplate 中设置了一些东西。我希望当单元格编辑加载并显示模板时,应将键盘焦点赋予模板中的某个控件。
考虑这个例子,当你进入编辑模式时,文本框不是以键盘为中心的:
wpf - 在 ControlTemplate 中的控件上设置焦点(第 2 部分)
我对肯定是最常见的 WPF 要求之一感到困惑。我已阅读此问题,但我的解决方案实施不起作用。
这是无外观控件的标记:
这是包含 CustomControl 实例的 Window 的标记:
这是代码隐藏:
加载 Window1 时,文本框变为绿色(表示触发器有效),但焦点仍位于 CCtl 而不是文本框。毫无疑问,这与显示以下数据错误的输出有关:
找不到引用“ElementName=myTextBox”的绑定源。BindingExpression:(无路径);数据项=空;目标元素是'CustomControl'(名称='CCtl');目标属性是“FocusedElement”(类型“IInputElement”)。
我不知道为什么会出现这个错误。任何指针感激地收到,谢谢。
wpf - 如何在 RibbonButton.Click 上引发 DataGrid.LostFocus?
以下代码使用 ToolBar 并正确导致 DataGrid.LostFocus (通过在执行命令之前提交任何未提交的行编辑);
但是,我现在正尝试使用功能区(oct10 版本)做同样的事情,但以下不会导致 DataGrid.LostFocus 被提升;
如何使用功能区引发此事件?我尝试将 IsFocusScope 移动到其他级别(Ribbon、RibbonTab、RibbonButton)无济于事。
wpf - 如何根据其子控件是否有焦点来设置自定义控件的样式?
我们有一个自定义画布,它有专门的节点,其行为很像标准 MDI 应用程序的窗口。期望的行为是,如果“窗口”的任何子控件具有焦点,则该“窗口”被认为是活动的。
现在 IsFocused 属性似乎没有级联,这意味着如果子控件具有焦点,它的容器也没有设置为“focused”,所以我们不能使用它。出于同样的原因,我们不能在容器上设置 IsFocused 属性,因为我相信这会从孩子那里偷走它。
我唯一的想法是创建一个名为 HasChildWithFocus 或类似的新 DP,然后在代码隐藏中,侦听冒泡事件并设置该标志。不确定这是最好的方法。(我们可以将其实现为附加属性/附加行为的组合。)
但是当然,如果我们可以简单地问一个控件“嘿......你或你的任何孩子有焦点吗?”会好得多。
那你可以吗?
java - 如何在 Java JFrame GUI 中使用 requestFocus?
我被分配了一项任务,但我对 Java 完全陌生(我已经用 C++ 和 Python 编程两年了)。
所以我们正在做 GUI,基本上我们扩展了 JFrame 并添加了几个字段。
假设我们有一个名为“Text 1”和“Text 2”的字段。当用户在文本 1 中使用光标按 Enter 键时,将焦点移至文本 2。我尝试添加
但这根本行不通。
我注意到不建议使用 requestFocus,而应该使用 requestFocusWindows。但我也试过了。根据一些读数,我似乎必须做键盘动作和听众?但是我的老师说它只需要1行......
binding - 在 HierarchicalDataTemplate 中绑定 FocusedElement
我正在尝试将控件集中在 HierarchicalDataTemplate 中。不幸的是,我尝试绑定到模板中的控件失败了。这是我的代码:
当树视图项获得焦点时触发触发器,但 {Binding ElementName=EditBox} 失败并显示消息“找不到与引用'ElementName=EditBox,...的绑定的源”
如何修复此绑定?或者有没有更好的方法在 HierarchicalDataTemplate 中设置控件的焦点?
提前感谢您的帮助。
c# - WPF FocusNavigationDirection、MoveFocus 和箭头键
我有一个简单的应用程序(一个带有 6 个按钮的网格 - 2 行 3 个 - 用于测试)并且正在按如下方式处理左右箭头键
不幸的是,这并没有像我预期的那样表现,因为焦点似乎总是在与 FocusNavigationDirection 指定的方向相反的方向上移动。
关于为什么会这样的任何想法?MSDN 文档对如何定义“左侧”有点模糊。
如果需要,我还将每个按钮的制表位定义为 1 到 6。
wpf - 你如何解决这个 LostFocus/LostKeyboardFocus 问题?
好的,我有一个控件,它有一个 IsEditing 属性,为了参数,它有一个默认模板,通常是一个文本块,但是当 IsEditing 为真时,它会在文本框中交换以进行就地编辑。现在,当控件失去焦点时,如果它仍在编辑,它应该退出编辑模式并换回 TextBlock 模板。很直截了当,对吧?
想想在 Windows 资源管理器或桌面上重命名文件的行为(这与我所知道的相同......)这就是我们想要的行为。
问题是您不能使用 LostFocus 事件,因为当您切换到另一个窗口(或属于 FocusManager 的元素)时,LostFocus 不会触发,因为控件仍然具有逻辑焦点,因此无法正常工作。
如果您改用 LostKeyboardFocus,虽然这确实解决了“其他 FocusManager”问题,但现在您有了一个新问题:当您正在编辑并右键单击文本框以显示上下文菜单时,因为上下文菜单现在具有键盘焦点,您的控件失去键盘焦点,退出编辑模式并关闭上下文菜单,使用户感到困惑!
现在我尝试在菜单打开之前设置一个标志以忽略 LostKeyboardFocus,然后在 LostKeyboardFocus 事件中使用该标志来确定是否将其踢出编辑模式,但如果菜单打开并且我单击其他地方应用程序,由于控件本身不再具有键盘焦点(菜单有它),因此控件永远不会获得另一个 LostKeyboardFocus 事件,因此它仍处于编辑模式。(我可能必须在菜单关闭时添加一个检查以查看有焦点的内容,然后如果不是控件,则手动将其从 EditMode 中踢出。这似乎很有希望。)
所以......有人知道我如何成功地编码这种行为吗?
标记
wpf - 设置焦点不允许即时编辑
我有一个带有文本框的 WPF UserControl。以下是文本框及其父控件的定义方式:
设置 FocusManager.FocusedElement 后,我可以在文本框中看到一个光标栏。但是,光标栏不闪烁,并且不允许用户立即开始输入。
如果没有设置 FocusManager.FocusedElement,当应用程序启动时,文本框中根本没有光标栏。
这是完整的 XAML