9

この投稿では、CodeNaked は、アプリケーションの TextFormattingModeProperty を変更する方法について説明します。これにより、.Net 4 で私の問題 (以下を参照) が完全に解決されます。.Net 3.5 で同じことを達成するにはどうすればよいですか?

私の根本的な問題:

特定の画面にいくつかの WPF コントロールがある .Net 3.5 ベースの winforms アプリケーションがあります。Windows DPI 設定が (120% ではなく) 150% に設定されている場合、スケーリングは期待どおりに行われます。ただし、WPF コントロールが作成されるとすぐに、スケーリングはすべてのウィンドウで 100% に戻されます。スケーリングは変更しないでいただきたいと思います。

デモ用のテスト アプリケーションを作成しました。デフォルトでは、wpf コントロールで別の winform を開くボタンを持つ winform を開きます。変更せずに 2 番目のフォームを開くと、スケーリングが 100% に戻ります。ただし、Form1.vb の 11 行目のコメントが解除されている場合、2 番目のフォームを開いたときにスケーリングは引き続き正しく行われます。

Dim newApp As New App() 'Uncomment to fix automatic scaling

クラス アプリ:

Imports System.Windows
Imports System.Windows.Media

Partial Public Class App
    Inherits Application

    Public Sub App()
        TextOptions.TextFormattingModeProperty.OverrideMetadata(GetType(Window), New FrameworkPropertyMetadata(TextFormattingMode.Display, FrameworkPropertyMetadataOptions.AffectsMeasure Or FrameworkPropertyMetadataOptions.AffectsRender Or FrameworkPropertyMetadataOptions.Inherits))

    End Sub
End Class
4

1 に答える 1