20

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

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

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

Silverlight 默认样式的 DataGrid:

Silverlight 数据网格

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

4

5 回答 5

7

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

http://datagridthemesfromsl.codeplex.com

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

于 2010-11-24T17:45:53.233 回答
7

深埋在 MSDN 中,我发现了这个.

在文章的底部,您将看到这句话:

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

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

于 2011-01-19T04:04:02.173 回答
6

似乎没有开箱即用的风格。
我在微软建议网站上发布了一条建议,请在这里这里投票!!!

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

非常感谢!

于 2009-12-27T02:36:19.177 回答
2

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.

于 2009-12-28T21:02:35.617 回答
0

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

然而,与此同时,我发现了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>
于 2010-06-06T07:43:13.713 回答