在wpf中管理焦点

本文关键字:焦点 管理 wpf | 更新日期: 2023-09-27 18:09:33

在我的WPF应用程序,
我有两个视图和两个视图模型,
当第一个ViewModel被绑定到我的ContentControl时,根据我的ViewModel加载的第一个视图和第一个视图上的一个按钮已经聚焦,
当第二个ViewModel绑定到ContentControl时,第二个View根据第二个View加载,
当我返回并显示第一个ViewModel和View时,我想聚焦已经聚焦的旧按钮,

有些东西像下面的

    public static IInputElement focusedelement;
    public UCMainMenu()
    {
        InitializeComponent();
    }
    private void UserControl_Loaded(object sender, RoutedEventArgs e)
    {
        Keyboard.Focus( focusedelement);
    }
    private void UserControl_Unloaded(object sender, RoutedEventArgs e)
    {
        focusedelement = Keyboard.FocusedElement;
    }

在wpf中管理焦点

在视图模型中创建一个bool IsFocused属性,然后将其数据绑定到相关控件的UIElement.IsFocused属性:

<Button IsFocused="{Binding IsFocused}" ... />

然后,当您想要聚焦其中任何一个时,只需在相关视图模型中将IsFocused属性设置为true:

IsFocused = true;

请注意,如果它已经是true,您可能需要首先设置为false,然后返回到true,这工作