WPF DataGrid样式 - Silverlight DataGrid?

时间:2009-11-15 04:07:02

标签: wpf silverlight datagrid styling wpftoolkit

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

如果有人复制了在WPF中使用的SL样式,请告诉社区,而不是重新发明轮子。

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

Silverlight默认样式的DataGrid:

Silverlight DataGrid

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

5 个答案:

答案 0 :(得分:8)

深埋在MSDN中,我找到了this

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

例如,请看下面的插图,其中显示了使用ControlTemplates示例的样式部分

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

答案 1 :(得分:7)

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

http://datagridthemesfromsl.codeplex.com

没有所有主题,但至少有一些主题。

答案 2 :(得分:6)

似乎没有开箱即用的风格 我向Microsoft建议网站发布了一条建议,请投票herehere !!!

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

非常感谢!

答案 3 :(得分:1)

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

如果您在自己的操作系统上使用经典系统主题,但希望您的WPF应用程序使用Aero主题,则可以向应用添加合并字典并强制执行A​​ero主题,如下所示。请注意,您可能需要相应地更改二进制版本和公钥。

<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>