在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;
}
在视图模型中创建一个bool IsFocused
属性,然后将其数据绑定到相关控件的UIElement.IsFocused
属性:
<Button IsFocused="{Binding IsFocused}" ... />
然后,当您想要聚焦其中任何一个时,只需在相关视图模型中将IsFocused
属性设置为true
:
IsFocused = true;
请注意,如果它已经是true
,您可能需要首先设置为false
,然后返回到true
,这工作