【问题标题】:WPF Combobox rendering on XPXP上的WPF组合框渲染
【发布时间】:2011-05-14 22:31:17
【问题描述】:

我在 XP 上的简单组合框渲染有问题。

代码只是:

<ComboBox Cursor="Hand" customCommands:ComboBoxSelectionChange.Command="{Binding StatusChange}" ItemsSource="{Binding AvailabilityStatusList}"/>

但是,不同操作系统上的结果并不完全符合我的预期:

Vista:
XP:

【问题讨论】:

    标签: wpf combobox windows-xp rendering


    【解决方案1】:

    您可以强制 WPF 应用程序应用特定的 Windows 标准方案,而不考虑当前的 Windows 版本(例如 XP 与 Vista)。

    要强制您的应用程序使用 Aero 主题 (Vista),请将其放入您的 App.xaml:

      <!-- Use the Aero scheme for your application, regardless the currently applied Windows Theme or OS Version. -->
        <ResourceDictionary
            Source="/PresentationFramework.Aero, Version=3.0.0.0, Culture=neutral, 
            PublicKeyToken=31bf3856ad364e35, ProcessorArchitecture=MSIL;component/themes/aero.normalcolor.xaml" />
    

    【讨论】:

    • 谢谢,这正是我想要的!由于我们的应用程序不使用操作系统配色方案(它使用自定义的透明窗口),因此即使在自定义主题上也不会显得很奇怪。唯一的问题仍然是 XP 和 Vista/7 上的字体大小之间存在差异。
    • 哇!!不知道你能做到这一点。印象深刻。
    【解决方案2】:

    与大多数其他控件一样,ComboBox 考虑了操作系统主题,因此您的用户界面将与操作系统表面的其余部分保持一致。

    如果您想创建“与操作系统无关”的外观(即在不同的操作系统中保持相同的外观),您必须重新对其进行模板化。

    【讨论】:

    • 我真的不想(或不需要)重新模板,我只是希望它看起来不错。您可以在屏幕截图中清楚地看到 XP 上的标准结果是失真的。
    • 它没有失真。只是你必须设置它的高度。试试 Height="20",它会像你想要的那样神奇。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    相关资源
    最近更新 更多