WPF MoveFocus () работает на Vista, а не на XP - PullRequest
2 голосов
/ 22 сентября 2009

Следующий фрагмент кода работает в Vista должным образом (фокус перемещается вниз по ListView), но в XP SP3 (с .Net 3.5 SP1 на обоих) он перемещается только между первыми двумя элементами ListView.

if (myListView.SelectedItem != null) {
    IInputElement orig = FocusManager.GetFocusedElement(this);
    FocusManager.SetFocusedElement(this, myListView);
    ListViewItem lvi = myListView.ItemContainerGenerator.ContainerFromItem(myListView.SelectedItem) as ListViewItem;
    TraversalRequest down = new TraversalRequest(FocusNavigationDirection.Down);

    Boolean result = lvi.MoveFocus(down);
    Console.WriteLine(result.ToString());
    FocusManager.SetFocusedElement(this, orig);
}

Я вызываю этот код из события previewkeydown окна, когда фокус находится в текстовом поле.Сейчас я копаюсь в фреймворке, чтобы попытаться найти разницу между XP и Vista внутри MoveFocus ().Я чувствую, что снова занимаюсь веб-разработкой, тестирую браузеры на причуды ...

Ответы [ 3 ]

1 голос
/ 12 ноября 2009

Запускали ли вы Windows XP с пакетом обновления 2 (SP2), в документе указаны следующие требования: Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003

Msdn doc

Для меня я разрабатываю приложения WPF под XP и все работает правильно ...

0 голосов
/ 25 ноября 2009

Требования для VS2008 удовлетворяются XP SP2, WPF лучше всего подходит для Windows Vista / Windows 7, в этом случае.

0 голосов
/ 23 сентября 2009

В целом я чувствую, что многие функции в WPF используют технологию, которая является новой в Vista и не поддерживается в XP. Вещи, которые я испытал, в основном связаны с визуальными эффектами, но в вашем случае это, очевидно, что-то еще.

Моя первоначальная мысль в вашем случае заключается в том, что в Windows есть некоторые новые сообщения Windows, которые не работают в XP.

...