2017-05-22 3 views
0

画面解像度1920 * 1080のコンピュータ画面に収まるWPFアプリケーションがありますが、同じWPFアプリケーションが同じ解像度1920を持つMicrosoft Surface画面に収まりません* 1080。正確な問題は、小さなラップトップにスクロールバーが表示されないことです。この問題は、問題が発生しているページのXAMLとそれをホストするウィンドウの問題です。どんな提案もありがとうございます。ありがとう。WPFアプリケーションがすべてのモニタ画面に収まらない

コードは今のところこのようなものです。

<Page x:Class="form_Dock" Background="#FF19191E" MouseEnter="Page_MouseEnter" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:ABC.UI" SnapsToDevicePixels="True"> 

答えて

0

これは、デバイスに依存しないピクセルを使用してアプリケーションのサイズを決定するWPFによって発生するスケーリングの問題です。表面のスクリーンはかなり小さいので、ウィンドウのサイズを投げつけている、補正するためにいくつかのスケーリングがWindowsで行われることがあります。

あなたがtrueに、ウィンドウ要素にSnapsToDevicePixelsを設定することで、あなたの問題を解決することができるかもしれない:

https://msdn.microsoft.com/en-us/library/system.windows.uielement.snapstodevicepixels(v=vs.110).aspx

また、これは非常によく、デバイスに依存しないピクセルを説明します

https://wpf.2000things.com/2013/02/19/759-device-independent-units-dips/

+0

こんにちはサイモン。あなたの提案に感謝します。私は自分のコードでこれを使用しようとしました。以下は私が使っているコードの部分です。 <ページX:クラス= "form_Main" 背景= "#1 FF19191E" のMouseEnter = "Page_MouseEnter" のxmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" のxmlns:X = "のhttp: //schemas.microsoft.com/winfx/2006/xaml " xmlns:local =" clr-namespace "SnapsToDevicePixels =" True ">。 SnapsToDevicePixels = "True"にコードを配置する必要があるのはこれですか?これはWindowsのタグにあります。それは問題ですか?私は表面でテストしました。それは動作しません。 – Robert

+0

通常、Windowオブジェクトであるルート要素にSnapToDevicePixelsを設定することになっています。ページを表示するには別の要素にページを含める必要があるため、SnapToDevicePixelsを置くことは正しくありません。 WPFプロジェクトは、アプリケーションウィンドウまたはブラウザで実行されますか?ページの幅をコンテナの幅よりも大きくすると、おそらくスクロールバーが表示されます。 –

+0

あなたは上記のPrismとWpftoolkitについて言及しました。あなたはそれらのコントロールの1つを使用していますか? –

関連する問題