这不是什么秘密:Silverlight 的DataGrid
默认样式很漂亮,而 WPF 的样式很差。
与其重新发明轮子,不如让我问问社区是否有人复制了 SL 样式以在 WPF 中使用。
请查看屏幕截图并自行判断 Silverlight 和 WPF 团队如何投资于他们的产品。
Silverlight 默认样式的 DataGrid:
WPF 默认样式 DataGrid (在 Saied K 的回答后更新):
这不是什么秘密:Silverlight 的DataGrid
默认样式很漂亮,而 WPF 的样式很差。
与其重新发明轮子,不如让我问问社区是否有人复制了 SL 样式以在 WPF 中使用。
请查看屏幕截图并自行判断 Silverlight 和 WPF 团队如何投资于他们的产品。
Silverlight 默认样式的 DataGrid:
WPF 默认样式 DataGrid (在 Saied K 的回答后更新):
我还没有找到任何具有工作 Silverlight-style 的项目DataGrid
,所以我在 Codeplex 上创建了一个:
http://datagridthemesfromsl.codeplex.com
没有所有的主题,但至少有一些。
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.
我也投票支持两个连接站点错误,默认情况下这确实应该正确遵循系统主题!
然而,与此同时,我发现了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>