Frage

Ich verwende System.Windows.MessageBox in einer WPF-Anwendung, und aus irgendeinem Grunde seine Tasten, um das Windows 2000 gestylt - nicht WinXP, nicht Aero, nicht den WPF Standard. Nur grau mit grundlegenden 3D-Grenzen.

Wie kann ich sie mit einem moderneren Stil erscheinen? (Spielt keine Rolle, welche)

War es hilfreich?

Lösung

Sie können dieses Problem beheben mit einem Manifest. Lesen Sie diesen Artikel für Schritt-für-Schritt-Anleitung: Warum bin ich Getting Old Style File Dialoge und Message-Boxen mit WPF

Im Grunde müssen Sie eine XML-Datei ein ‚Manifest‘, um Ihre Anwendung mit dem Namen hinzuzufügen.

Update:

Eigentlich ist es sehr einfach, dies in VS2008 zu tun. Zum Projekt Eigenschaften-> Anwendung und klicken Sie auf die Schaltfläche ‚Ansicht UAC-Einstellungen‘. Dadurch wird automatisch eine Anwendung-Manifest-Datei erstellen und öffnen. Bearbeiten diese Datei wie folgt:

Kurz nach der Zeile:

</trustInfo>

Fügen Sie in dem folgenden Abhängigkeitsabschnitt:

  <!-- Activate Windows Common Controls v6 usage (XP and Vista): -->
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          language="*"
        />
    </dependentAssembly>
  </dependency>

Meine komplette Manifest sieht wie folgt aus:

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <!-- UAC Manifest Options
            If you want to change the Windows User Account Control level replace the 
            requestedExecutionLevel node with one of the following.

        <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
        <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
        <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />

            If you want to utilize File and Registry Virtualization for backward 
            compatibility then delete the requestedExecutionLevel node.
        -->
        <requestedExecutionLevel level="asInvoker" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>
  <!-- Activate Windows Common Controls v6 usage (XP, Vista, Win 7) to support themed dialogs: -->
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          language="*"
        />
    </dependentAssembly>
  </dependency>
</asmv1:assembly>

Nachdem Sie das getan, nur bauen Ihre App, laufen, und voila, die MessageBox Dialog Tasten übernehmen die System Thema Stil.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top