2009-09-22 49 views
2

下面的一段代碼在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之間的不同之處。我覺得我再次在網頁開發,測試瀏覽器的怪癖......

+0

在我的測試中,它在XP和Vista上都是一樣的(只在前兩項之間移動)。這很奇怪,但它必須是導致此行爲的設置中的其他設置。 – 2009-11-26 10:02:42

回答

0

我的感覺總的來說,WPF中的許多功能使用的是Vista中新增的技術,並且在XP中不支持。我所經歷的事情主要與視覺效果有關,但就你而言,這顯然是別的。

我的初步想法在你的情況是,有一些Windows消息是在Vista中新的,不能在XP中工作。

1

你有沒有運行Windows XP服務PACK2,在文檔的要求爲:Windows 7,Windows Vista中,Windows XP SP2中的Windows Server 2008 R2,Windows Server 2008中,Windows Server 2003的

Msdn doc

對我來說,我在XP下開發WPF應用程序,並且所有工作都正確...

0

XP SP2滿足了對VS2008的要求,WPF最適合Windows Vista/Windows 7,可能就是這種情況。

相關問題