programing

WPF MessageBox 창 스타일입니다.

showcode 2023. 4. 25. 23:49
반응형

WPF MessageBox 창 스타일입니다.

기본 Windows 스타일을 표준에 적용하려면 어떻게 해야 합니까?MessageBoxWPF에서요?

예를 들어, 다음 코드를 실행하면 다음과 같습니다.

MessageBox.Show("Hello Stack Overflow!", "Test", MessageBoxButton.OKCancel, 
    MessageBoxImage.Exclamation);

메시지 상자가 나타납니다.

여기에 이미지 설명을 입력하십시오.

그러나 WinForms에서는 모든 스타일에 문제가 없습니다.

MessageBox.Show("Hello Stack Overflow!", "Test", MessageBoxButtons.OKCancel, 
    MessageBoxIcon.Exclamation);

여기에 이미지 설명을 입력하십시오.

이 페이지에 따르면 WPF는 일부 컨트롤의 이전 스타일을 선택합니다.

이 파일을 제거하려면 사용자 지정 app.manifest 파일(새 항목 추가 -> 응용 프로그램 매니페스트 파일)을 만들고 /trustInfo - Tag 바로 뒤에 다음 코드를 붙여 넣어야 합니다.

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

그런 다음 이 app.manifest를 사용하여 솔루션을 컴파일해야 합니다(프로젝트 속성 -> 응용 프로그램 -> "아이콘 및 매니페스트"의 새 매니페스트를 가리킵니다).

지금 응용 프로그램을 시작하면 WinForms - MessageBox처럼 보일 것입니다.

트리거한 방법과 같이 일반적인 참조를 양식 참조로 "재연결"합니다(동일하지만 이름은 다릅니다).

using MessageBox = System.Windows.Forms.MessageBox;
using MessageBoxImage = System.Windows.Forms.MessageBoxIcon;
using MessageBoxButton = System.Windows.Forms.MessageBoxButtons;
using MessageBoxResult = System.Windows.Forms.DialogResult;

namespace ... class ...

    public MainWindow()
    {
        InitializeComponent();

        System.Windows.Forms.Application.EnableVisualStyles();
    }

    public void do()
    {
        // updated style, but good syntax for a later solution
        MessageBox.Show("Some Message", "DEBUG", MessageBoxButton.OK, MessageBoxImage.Question);
    }

명백한 해결책은 제게 효과가 없었습니다

WinForms가 이렇게 작동하는 이유는 시각적 스타일이 기본 기능에서 설정되기 때문입니다(즉, 공통 컨트롤 v6 사용).시스템에 대한 호출을 제거할 경우입니다.윈도우입니다.Forms.Application을 참조하십시오.EnableVisualStyles()를 선택하면 WinForms 메시지 상자가 WPF 메시지 상자와 동일하게 나타납니다.

모든 WPF 컨트롤이 렌더링되므로 새 버전의 공통 컨트롤을 사용할 필요가 없기 때문에 WPF 앱에서는 이러한 문제가 발생하지 않습니다.

전화를 걸어보세요EnableVisualStyles()WPF 응용 프로그램의 시작 부분에 있습니다.효과가 있을지는 모르겠지만 시도해 볼 만해요.이 작업을 수행하려면 시스템에 대한 참조가 필요합니다.창문들.그래도 양식이요

또한 WPF의 경우 WPF 메시지 상자가 있는 Extended WPF Toolkit을 사용하는 것이 좋습니다.

새 매니페스트를 만들고 붙여넣습니다.

<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
  <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">
        <requestedExecutionLevel level="asInvoker" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>
  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
    </application>
  </compatibility>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
      type="win32"
      name="Microsoft.Windows.Common-Controls"
      version="6.0.0.0"
      processorArchitecture="*"
      publicKeyToken="6595b64144ccf1df"
      language="*"
    />
    </dependentAssembly>
  </dependency>
</assembly>

언급URL : https://stackoverflow.com/questions/5289328/wpf-messagebox-window-style 입니다.

반응형