在wpf中管理焦点

时间:2014-06-19 11:47:26

标签: c# wpf

在我的wpf应用中,
我有两个视图和两个ViewModel,
当第一个ViewModel绑定到我的ContentControl时,根据我的ViewModel加载的第一个View和第一个View上的一个按钮已经聚焦,
当第二个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;
    }

1 个答案:

答案 0 :(得分:0)

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

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

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

IsFocused = true;

请注意,如果它已经是true,则可能需要先将其设置为false,然后再返回true才能生效。< / p>