この投稿では、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