WPF DataGrid 样式-Silverlight DataGrid?

Posted

技术标签:

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

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

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

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

Silverlight 默认样式的 DataGrid:

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

【问题讨论】:

【参考方案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 控件? 请投票 here 和 here 并留下粗鲁的 cmets! @Shimmy 请问这个示例应用程序有不同的 ResourceDictionaries 吗?我只找到了 Shared.xaml,与 MSDN 上显示的银色皮肤相比,皮肤是蓝色的并且非常难看。这个银色模板也可以下载吗?【参考方案3】:

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

任何模仿过 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 风格上做任何改进。

以上是关于WPF DataGrid 样式-Silverlight DataGrid?的主要内容,如果未能解决你的问题,请参考以下文章

WPF自定义样式篇-DataGrid

WPF DataGrid 动态样式

wpf:DataGrid 禁用选定的行样式 - 或行选择

WPF DataGrid交替行样式

DataGrid中的WPF样式单元格和行

WPF 基础控件之 DataGrid 样式