- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想要一个始终绑定(bind)到当前焦点控件的属性。
我见过两种获取当前焦点控件的方法。
一个是使用 Keyboard.FocusedElement。第二个是遍历可视化树。
因为我想知道每次焦点元素发生变化时,可视化树遍历似乎一直在运行大量代码。
但是 Keyboard.FocusedElement 没有实现 INotifyPropertyChanged。所以我不能正常绑定(bind)它。
有没有办法让它在发生变化时通知我?
(或者通过其他方式让属性始终设置为当前获得焦点的控件?)
注意:显然我可以在每个控件上添加一个事件并让它更新一个属性。但是我有很多控制权。我想避免必须将事件附加到它们中的每一个。
最佳答案
您可以尝试订阅 Keyboard.GotKeyboardFocus Attached Event
Occurs when an element receives keyboard focus.
这是一个订阅此事件 OnStartup 的示例。例如,您可以使用执行此操作的附加行为并更新可以绑定(bind)到的附加属性。
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
EventManager.RegisterClassHandler(typeof(UIElement),
Keyboard.GotKeyboardFocusEvent,
new RoutedEventHandler(Keyboard_GotKeyboardFocus), true);
base.OnStartup(e);
}
private void Keyboard_GotKeyboardFocus(object sender, RoutedEventArgs e)
{
Debug.WriteLine(e.OriginalSource);
}
}
关于c# - 有没有办法绑定(bind)到 Keyboard.FocusedElement?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11367013/
我使用 Prism 和 MVVM 创建了一个基本应用程序。到目前为止,它仅由 Shell 和一个 View/ViewModel 组成。 在应用程序加载过程中,我将 View 加载到我的主要区域中并显示
我使用绑定(bind)将 FocusManager.FocusedElement 作为参数传递。
我有如下的 WPF xaml 代码: 如何将 FocusedElement 绑定(bind)到 ViewModel 中的属性? 类似的代码如下: Switch
我有如下的 WPF xaml 代码: 如何将 FocusedElement 绑定(bind)到 ViewModel 中的属性? 类似的代码如下: Switch
我正在尝试将键盘焦点设置为包含在堆栈面板中的文本框。当 IsEditMode 变为 true 时,我希望文本框默认成为焦点。 我试过这个代码:
Keyboard.FocusedElement 给出具有键盘焦点的元素。但是它没有二传手。我想通过代码将此属性设置为另一个元素。有办法吗? 关于 microsoft's site ,它是这样说的:“键
我有几个数据网格的应用程序并导出到 excel 命令,它将焦点数据网格作为命令参数。是否可以将 CommandParameter 绑定(bind)到 FocusManager.FocusedEleme
我想要一个始终绑定(bind)到当前焦点控件的属性。 我见过两种获取当前焦点控件的方法。 一个是使用 Keyboard.FocusedElement。第二个是遍历可视化树。 因为我想知道每次焦点元素发
我有一个自定义 RoutedUICommand MyCommand 通过 ICommand.Execute 执行.顶部窗口有一个绑定(bind)来处理它: 这是此命令的唯一处理程序。我还
我是一名优秀的程序员,十分优秀!