【问题标题】:WPF DataGrid style-Silverlight DataGrid?WPF DataGrid 样式-Silverlight DataGrid?
【发布时间】:2010-12-16 17:31:51
【问题描述】:

这不是秘密:Silverlight 的 DataGrid 默认样式很漂亮,而 WPF 的样式很差。

与其重新发明轮子,不如让我问问社区是否有人复制了 SL 样式以在 WPF 中使用。

请查看屏幕截图并自行判断 Silverlight 和 WPF 团队如何投资他们的产品。

Silverlight 默认样式的 DataGrid:

WPF 默认样式的 DataGrid(在 Saied K 的回答后更新):

【问题讨论】:

    标签: wpf silverlight datagrid styling wpftoolkit


    【解决方案1】:

    我没有找到任何具有工作 Silverlight 风格 DataGrid 的项目,所以我在 Codeplex 上创建了一个:

    http://datagridthemesfromsl.codeplex.com

    没有所有主题,但至少有几个。

    【讨论】:

    • +1 非常感谢!您能否详细说明您的 codeplex 页面如何将其与现有数据网格一起使用?
    • @gideon - 链接是now available
    【解决方案2】:

    深埋在 MSDN 中,我找到了this

    在文章的底部,你会看到这句话:

    例如,看看下面的插图,它显示了使用 ControlTemplates 进行样式设置示例的一部分

    如果您单击“使用 ControlTemplates 进行样式设置示例”,它会将您带到 download link。下载后,您可以编译项目,它包括各种样式,包括难以捉摸的数据网格样式!您可以获取 MS 的 DataGrid.xaml 文件并根据需要对其进行修改。

    【讨论】:

    • +1 正在寻找包含 WPF 的所有基本控件模板的 WPF SimpleStyles 项目。感谢您的帮助!
    • @Matt,您是否测试了this 主题并且它也影响了DataGrid 控件?
    • 请投票 herehere 并留下粗鲁的 cmets!
    • @Shimmy 请问这个示例应用程序有不同的 ResourceDictionaries 吗?我只找到了 Shared.xaml,与 MSDN 上显示的银色皮肤相比,皮肤是蓝色的并且非常难看。这个银色模板也可以下载吗?
    【解决方案3】:

    似乎没有开箱即用的样式。
    我向微软建议网站发布了一条建议,请投票herehere!!!

    任何模仿过 WPF 的 Silverlight DataGrid 默认样式的人都应该发布他的答案,我会将其标记为答案并给他投票!

    非常感谢!

    【讨论】:

    • 我看到了,谢谢,希望那边的懒员工能看到。
    • 我打开了一个新的,我想一旦他们关闭连接,就不会收到任何关于进一步 cmets 的警报,请查看connect.microsoft.com/WPF/feedback/…
    • +1 也为那个。顺便说一句,确实有点帮助的一件事是使用GridLinesVisibility="None" 关闭网格。它仍然不会像 Silverlight 版本那么漂亮,但是那些黑色的网格线太丑了。
    • 我只给了它剩下的两票。 (我讨厌总共只有 10 票……)
    【解决方案4】:

    WPF 附带了许多样式,例如 Luna、Aero、Classic 等。这些主题是根据您的系统设置应用的。上一篇文章的截图看起来像 WPF Classic 主题,但我猜你正在寻找更吸引人的主题。

    如果您在操作系统上使用 Classic 系统主题,但希望 WPF 应用程序使用 Aero 主题,例如,您可以将合并字典添加到您的应用程序并强制使用 Aero 主题,如下所示。请注意,您可能需要相应地更改二进制版本和公钥。

    <Application.Resources>
       <ResourceDictionary>
          <ResourceDictionary.MergedDictionaries>
             <ResourceDictionary
                 Source="/PresentationFramework.Aero;V4.0.0.0;31bf3856ad364e35;component\themes/aero.normalcolor.xaml"/>
          </ResourceDictionary.MergedDictionaries>
       </ResourceDictionary>
    </Application.Resources>
    

    希望对您有所帮助, 赛义德 K。

    【讨论】:

    • 我更新了我的照片,在新照片中你可以看到Windows 7 Aero 主题环境中wpf DataGrid 的默认样式,你可以在窗框上清楚地看到它。恕我直言,您真的没有理解我的问题。
    【解决方案5】:

    我也投票支持两个连接站点错误,这确实应该默认正确地遵循系统主题!

    不过,与此同时,我发现了 Malav Dhalgara 的一篇有用的帖子,其中包括以下示例,可用于为 WPFToolkit 中的控件启用 Aero 主题。假设从 Shimmy 发布此问题之日起,此示例并非来自 .NET 4.0 中的 DataGrid,但我可能是错的,也许它来自 beta 或 RC 之一。无论如何,这里是使用 WPFToolkit 的人的一个示例解决方法。

            <ResourceDictionary >
                <ResourceDictionary.MergedDictionaries>
    
                    <!--Enable Aero Theme-->
                    <ResourceDictionary source="/PresentationFramework.Aero,Version=3.0.0.0,Culture=neutral,
                                                 PublicKeyToken=31bf3856ad364e35,ProcessorArchitecture=MSIL;
                                                 component/themes/aero.normalcolor.xaml" />
    
                    <ResourceDictionary xmlns:tk="clr-namespace:Microsoft.Windows.Controls;assembly=WpfToolkit"
                                                 xmlns:sys="clr-namespace:System;assembly=mscorlib">
    
                        <!--Enable aero theme on toolkit components-->
                        <sys:String x:Key="{ComponentResourceKey 
                                                     TypeInTargetAssembly={x:Type tk:Calendar},ResourceId=Theme}">
                                                     Aero.NormalColor</sys:String>
    
                        <sys:String x:Key="{ComponentResourceKey
                                                     TypeInTargetAssembly={x:Type tk:DataGrid},ResourceId=Theme}">
                                                     Aero.NormalColor</sys:String>
    
                        <sys:String x:Key="{ComponentResourceKey
                                                     TypeInTargetAssembly={x:Type tk:DatePicker},ResourceId=Theme}">
                                                     Aero.NormalColor</sys:String>
    
                   </ResourceDictionary>
                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>
    

    【讨论】:

    • 当然,我们早就更新到 4.0,但是 .NET 4 并没有在 WPF 风格上做任何改进。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多