下面的代码可以按预期在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事件中调用此代码。我现在正在深入研究框架,尝试在MoveFocus()中找到XP和Vista之间的不同之处。我觉得我正在再次进行Web开发,测试浏览器的怪癖......
答案 0 :(得分:1)
您是否在文档中运行Windows XP Service Pack2,要求是:Windows 7,Windows Vista,Windows XP SP2,Windows Server 2008 R2,Windows Server 2008,Windows Server 2003
对我来说,我在XP下开发WPF应用程序并且一切正常......
答案 1 :(得分:0)
我的一般感觉是WPF中的许多功能都使用Vista中的新技术,而XP中则不支持。我经历的事情主要与视觉效果有关,但在你的情况下,它显然是别的东西。
我的初步想法是,在Vista中有一些新的Windows消息在XP中不起作用。
答案 2 :(得分:0)
XP SP2满足VS2008的要求,WPF最适合Windows Vista / Windows 7,可能就是这种情况。