#c# #wpf
#c# #wpf
Вопрос:
в моем приложении wpf у
меня есть два представления и две модели представления,
когда первая ViewModel привязана к моему ContentControl, первое представление загружается в соответствии с моей ViewModel, и одна из кнопок в первом представлении сфокусирована,
когда вторая ViewModel привязана к ContentControl, второе представление загружается в соответствии со вторым представлением,
когда явернитесь назад и покажите первую 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:
Создайте bool IsFocused
свойство в своих моделях представления, а затем привяжите его к UIElement.IsFocused
свойству соответствующих элементов управления:
<Button IsFocused="{Binding IsFocused}" ... />
Затем всякий раз, когда вы хотите сфокусировать любой из них, просто установите IsFocused
для свойства значение true
в соответствующей модели представления:
IsFocused = true;
Обратите внимание, что если он уже true
установлен, вам может потребоваться сначала установить для false
него значение, а затем вернуться к true
нему, чтобы это сработало.
Комментарии:
1. спасибо, вы имеете в виду, что я хочу определить свойство isFocused в виртуальной машине для каждой кнопки в представлении? на мой взгляд, у меня есть несколько кнопок, одна из которых сфокусирована, когда я покидаю это представление и перехожу к просмотру 2, когда я возвращаюсь к просмотру 1, последняя кнопка, которая сфокусировалась, должна сфокусироваться.
2. кнопка не сфокусирована attr.
3.Нет, я имею в виду, что вы создаете одно
IsFocused
свойство для каждой модели представления. Только одинButton
может быть сфокусирован при загрузке представления. Вы устанавливаете это свойство дляButton
того, что хотите иметь фокус, и устанавливаете свойство наtrue
каждый раз, когда загружается представление. Что касается вашего второго комментария, уButton
класса действительно естьIsfocused
свойство.