【问题标题】:WPF MoveFocus() working on Vista, not XPWPF MoveFocus() 在 Vista 上工作,而不是 XP
【发布时间】:2009-09-22 16:51:29
【问题描述】:

以下代码在 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 开发,测试浏览器的怪癖......

【问题讨论】:

  • 在我的测试中,它在 XP 和 Vista 上的工作方式相同(仅在前两项之间移动)。虽然很奇怪,但一定是设置中的其他东西导致了这种行为。

标签: c# .net wpf windows-vista windows-xp


【解决方案1】:

您是否运行过 Windows XP Service Pack2,文档中的要求是:Windows 7、Windows Vista、Windows XP SP2、Windows Server 2008 R2、Windows Server 2008、Windows Server 2003

Msdn doc

对我来说,我在 XP 下开发 WPF 应用程序,一切正常...

【讨论】:

    【解决方案2】:

    我的总体感觉是 WPF 中的许多功能使用 Vista 中的新技术,而 XP 不支持。我经历的事情主要是和视觉效果有关,但在你的情况下,显然是另外一回事。

    在您的情况下,我最初的想法是,有些 Windows 消息在 Vista 中是新的,但在 XP 中不起作用。

    【讨论】:

      【解决方案3】:

      XP SP2 满足 VS2008 的要求,WPF 最适合 Windows Vista/Windows 7,可能就是这种情况。

      【讨论】:

        猜你喜欢
        • 2011-04-02
        • 1970-01-01
        • 2011-10-10
        • 2011-05-16
        • 2012-02-07
        • 2023-03-11
        • 1970-01-01
        • 2011-04-18
        • 1970-01-01
        相关资源
        最近更新 更多