下面的一段代碼在Vista上按預期工作(焦點向下移動ListView),但在XP SP3上(兩者都是.Net 3.5 SP1),它只在前兩項ListView。WPF MoveFocus()在Vista上工作,而不是XP
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);
}
我從window的previewkeydown事件中調用此代碼,焦點位於文本框中時。我現在正在深入研究框架,試圖找出MoveFocus()中XP和Vista之間的不同之處。我覺得我再次在網頁開發,測試瀏覽器的怪癖......
在我的測試中,它在XP和Vista上都是一樣的(只在前兩項之間移動)。這很奇怪,但它必須是導致此行爲的設置中的其他設置。 – 2009-11-26 10:02:42