2009-11-15 7 views
21

Не секрет: Silverlight's DataGrid стиль по умолчанию красивый, а WPF - плохой.WPF DataGrid style-Silverlight DataGrid?

Вместо того, чтобы изобретать колесо, позвольте мне спросить сообщество, если кто-то скопировал стили SL для использования в WPF.

Пожалуйста, взгляните на скриншоты и судите сами, как команды Silverlight и WPF инвестируют в свои продукты.

Silverlight по умолчанию стиле DataGrid:

Silverlight DataGrid

WPF по умолчанию стиль DataGrid (обновляется после ответа Сайед Д.К.):
WPF DataGrid

ответ

7

я не нашел каких-либо проектов с рабочим Silverlight стиле DataGrid, так что я создал один на Codeplex:

http://datagridthemesfromsl.codeplex.com

ли не все темы, но есть по крайней мере, несколько там.

+2

+1 спасибо большое! Не могли бы вы рассказать о своей странице Codeplex, как использовать ее с существующей сетью данных? – gideon

+1

@gideon - ссылка [теперь доступна] (http://datagridthemesfromsl.codeplex.com/wikipage?title=How-To%3a%20use%20this%20themes%20library%20with%20your%20DataGrid&version=1). – SliverNinja

6

Кажется там не из коробки стиль.
Я отправил предложение на сайт предложений Microsoft, пожалуйста, голосуйте here и here !!!

Любой, кто подражал стилю Silverlight DataGrid по умолчанию для WPF, должен отправить свой ответ, и я помету его как ответ и даю ему голосование!

Большое спасибо!

+0

Я проголосовал и добавил забавный комментарий :) – devuxer

+0

Я видел его, спасибо, надеюсь, что кто-то из ленивых сотрудников начнет его видеть. – Shimmy

+1

Я открыл новый, я думаю, что как только они закроют соединение, никакие предупреждения не будут получены для дальнейших комментариев, посмотрите https://connect.microsoft.com/WPF/feedback/ViewFeedback.aspx?FeedbackID=525883. – Shimmy

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> 

Надежда, что помогает, Сайед К.

+1

Я обновил свою фотографию, на новой фотографии вы видите стиль по умолчанию для wpf DataGrid в среде темы Windows 7 Aero, вы можете четко видеть его на оконной рамке. Со всем уважением вы действительно не поняли мой вопрос. – Shimmy

0

Я голосовал за оба Соединим ошибок сайта тоже, это действительно должно следовать тему системы должным образом по умолчанию!

Однако в то же время я нашел полезный пост Malav Dhalgara, который включает в себя следующий пример, который можно использовать для включения темы Aero для элементов управления в WPFToolkit. Предполагая, что с момента, когда Shimmy отправил этот вопрос, что этот пример не поступал с DataGrid в .NET 4.0, но я мог ошибаться и, возможно, это был один из бета-версий или 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> 
+0

Конечно, мы обновили до 4.0 давным-давно, но .NET 4 не делал никаких улучшений в стиле WPF. – Shimmy

+0

Спасибо за обновление, слишком плохо, но он не улучшился. – jpierson

8

Похороненный глубоко в пределах MSDN, я нашел this.

В нижней части этой статьи, вы увидите эту фразу:

Например, взгляните на иллюстрацию, которая показывает часть стилизации с ControlTemplates Sample

Если нажать " Styling with ControlTemplates Sample ', он доставит вас до download link. После загрузки вы можете скомпилировать проект и включать в себя все виды стилей, в том числе неуловимый стиль datagrid! Вы можете взять файл MS DataGrid.xaml MS и изменить его для своих нужд.

+0

+1 Ищет проект [WPF SimpleStyles] (http://msdn.microsoft.com/en-us/library/ms771597%28v=VS.90%29.aspx), который содержит все основные шаблоны управления для WPF , Спасибо за помощь! – SliverNinja

+0

@Matt, вы протестировали тему [this] (http://msdn.microsoft.com/en-us/library/ms745683.aspx#styling_themes), и она также влияет на элемент управления DataGrid? – Shimmy

+2

Прошу проголосовать [здесь] (http://goo.gl/QDYxY) и [здесь] (http://goo.gl/S8ekJ) и оставить грубые комментарии! – Shimmy