这不是秘密:Silverlight的DataGrid
默认样式很漂亮而WPF很差。
如果有人复制了在WPF中使用的SL样式,请告诉社区,而不是重新发明轮子。
请查看截图并亲自判断Silverlight和WPF团队如何投资他们的产品。
Silverlight默认样式的DataGrid:
WPF默认样式的DataGrid(在Saied K的回答之后更新):
答案 0 :(得分:8)
深埋在MSDN中,我找到了this。
在文章的底部,你会看到这句话:
例如,请看下面的插图,其中显示了使用ControlTemplates示例的样式部分
如果单击“使用ControlTemplates Sample样式化”,则会转到download link。下载后,您可以编译项目,它包括各种样式,包括难以捉摸的数据网格样式!您可以获取MS的DataGrid.xaml文件并根据需要进行修改。
答案 1 :(得分:7)
我没有找到任何具有工作Silverlight风格DataGrid
的项目,所以我在Codeplex上创建了一个:
http://datagridthemesfromsl.codeplex.com
没有所有主题,但至少有一些主题。
答案 2 :(得分:6)
似乎没有开箱即用的风格 我向Microsoft建议网站发布了一条建议,请投票here和here !!!
任何将Silverlight DataGrid默认样式模仿为WPF的人都应该发布他的答案,我会将其标记为答案并给他投票!
非常感谢!
答案 3 :(得分:1)
WPF附带了许多样式,例如Luna,Aero,Classic等。这些主题是根据您的系统设置应用的。上一篇文章的截图看起来像WPF 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>
希望有所帮助, Saied K。
答案 4 :(得分:0)
我也投了两个连接站点错误,默认情况下这应该正确地遵循系统主题!
然而,与此同时,Malav Dhalgara找到了一个有用的帖子,其中包含以下示例,可用于为WPFToolkit中的控件启用Aero主题。假设从Shimmy发布这个问题的日期开始,这个例子不是来自.NET 4.0中的DataGrid,但我可能错了,也许它来自beta或RCs之一。无论如何,这里是使用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>