2010-01-16 11 views
36

Gibt es eine Möglichkeit, eine WPF-App so aussehen zu lassen, als ob sie unter Windows 7 läuft, selbst wenn sie unter XP läuft? Ich bin auf der Suche nach einer Art von Thema, das ich einfügen kann. Ich bin mir bewusst, die Themen auf Codeplex (http://www.codeplex.com/wpfthemes) Projekt, aber es fehlt Unterstützung für DataGrid, die ich dringend brauche. Ich dachte, das Windows 7 Theme wäre einfach ein einfacher Port oder irgendwo in einer Datei vorhanden. Alle Informationen, die Sie haben (auch wenn es schlechte Nachrichten sind) würden sehr geschätzt.Windows 7 Thema für WPF?

aktualisiert

Mit @ Lars Truijens Idee, ich war in der Lage, den Windows 7-Look für die wichtigsten Kontrollen zu bekommen, aber leider hat es nicht für die WPF-Toolkit DataGrid Steuerung zu arbeiten, was ich brauche.

DataGrid sieht wie folgt mit Aero Thema

Windows XP-look DataGrid

DataGrid wie diese So

Windows 7-look DataGrid

aussehen sollte, bin ich für eine solut noch auf der Suche Ionen für dieses Problem, wenn jemand irgendwelche Ideen hat. Vielleicht hat jemand eine Erweiterung des Aero-Themas erstellt, das die WPF-Toolkit-Steuerelemente abdeckt? Auch hier wird jede Information, die Sie haben, sehr geschätzt.

Update 2 - Problem gelöst!

Damit das Aero-Thema mit WPF Toolkit-Steuerelementen funktioniert, müssen Sie nur ein zweites Aero-Wörterbuch hinzufügen, damit Ihre App.xaml jetzt so aussieht.

<Application.Resources> 
    ... 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary 
       Source="/PresentationFramework.Aero;component/themes/Aero.NormalColor.xaml" /> 
      <ResourceDictionary 
       Source="pack://application:,,,/WPFToolkit;component/Themes/Aero.NormalColor.xaml" /> 
      ... 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

Auch würde ich empfehlen, die Rasterlinien in Ihrem DataGrid Kontrollen ausgeschaltet (weil sie aussehen schrecklich):

<DataGrid GridLinesVisibility="None" ...> 
+1

Ihr Update 2 hat mein Leben gerettet !!! Danke für das Posten dieses Updates! – Sonosar

Antwort

46

WPF kommt mit den Standard-Windows-Themen auf allen Windows-Versionen. Zum Beispiel können Sie das Aero-Design (das Vista und Windows 7 verwenden) unter Windows XP mit den folgenden Schritten haben:

  1. hinzufügen PresentationFramework.Aero zu Ihrer Anwendung Referenzliste als
  2. Bearbeiten Sie Ihre App erfordert. xAML

von diesem

<Application.Resources> 
    <!-- Your stuff here --> 
</Application.Resources> 

dieser

<Application.Resources> 
    <ResourceDictionary> 
    <!-- Put your stuff here instead --> 

    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="/PresentationFramework.Aero;component/themes/Aero.NormalColor.xaml"/> 
    </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

Quelle:http://mrpmorris.blogspot.com/2008/05/using-vista-aero-theme-in-xp-wpf-apps.html

Andere Alternativen unten. Stellen Sie sicher, dass Sie die entsprechende Assembly als Referenz zu Ihrer Referenzliste hinzufügen.

<ResourceDictionary Source="/PresentationFramework.Aero;component/themes/Aero.NormalColor.xaml"/> 
<ResourceDictionary Source="/PresentationFramework.Classic;component/themes/Classic.xaml"/> 
<ResourceDictionary Source="/PresentationFramework.Royale;component/themes/Royale.NormalColor.xaml"/> 
<ResourceDictionary Source="/PresentationFramework.Luna.Homestead;component/themes/Luna.Homestead.xaml"/> 
<ResourceDictionary Source="/PresentationFramework.Luna.Metallic;component/themes/Luna.Metallic.xaml"/> 
<ResourceDictionary Source="/PresentationFramework.Zune;component/themes/Zune.NormalColor.xaml"/> 
+0

+1 Danke! Ich werde es bald versuchen. – devuxer

+0

Ich hatte endlich die Chance, das auszuprobieren. Es funktioniert, aber wie ich befürchtet habe, nicht für das 'DataGrid'-Steuerelement. Bitte überprüfe mein Update. Das Aussehen des 'DataGrid' w/Aero Themas ist immer noch XP. – devuxer

+0

Naja, ich bin gerade auf eine Lösung des 'DataGrid' Problems gestoßen:' '. Ich werde meine Frage auch aktualisieren. – devuxer

4

One Neben Lars' Antwort und DanM des Update:

Bei der Bereitstellung müssen Sie die Aero-Dll in das Installationsverzeichnis hinzufügen.

Sie können es tun, indem Sie zu den Eigenschaften von PresentationFramework.Aero, die Sie zu den Referenzen hinzugefügt und CopyLocal=True setzen. Dann müssen Sie zu dem von Ihnen verwendeten Bereitstellungstool wechseln (ich liebe WIX ...) und es zur Liste der bereitgestellten Dateien hinzufügen.

+1

I glaube nicht, dass PresentationFramework.aero bereitgestellt werden muss. Laut http://msdn.microsoft.com/en-us/library/ff462634.aspx ist es im .NET Framework enthalten. –

+1

PresentationFramework.aero muss nicht bereitgestellt werden, wenn eine vollständige Referenz verwendet wird. Siehe meine Antwort hier: http://stackoverflow.com/questions/8175410/wpf-when-using-presentationframework-aero-doe-i-need-to-set-copy-local-to-tru/8185946#8185946 –