10

WPF でボーダレス アプリケーションを作成しましたが、かなりうまく機能します。ただし、WindowState を全画面表示に設定すると、アプリケーションは画面の解像度よりも多くのスペースを占有するため、画面の外側にすべての方向にピクセルが表示されます。(デフォルトの境界線を隠すために、ハードコードされた負のマージンが追加されているようです)

これを防ぐ方法はありますか?

私のxaml:

<Window x:Class="MyApp.Shell"
    WindowStyle="None"
    BorderThickness="0"
    AllowsTransparency="True"
    Background="Transparent"
    ResizeMode="CanResizeWithGrip"
    WindowState="{Binding MainApplicationWindowState}"
    ...

また、私が見た別の問題は、Windows ツールバー/タスクバーがフルサイズの状態で覆われていることです。そのため、「実際の」画面の高さが使用され、「利用可能な」画面の高さではなく、画面の高さから Windows のツールバー/を引いた高さを意味します。タスクバー!

これらの問題の解決策を見つけた人はいますか?

ありがとう

4

9 に答える 9

4

私はこの素晴らしい解決策を見つけました

<Window WindowStyle="None" WindowStartupLocation="CenterScreen" WindowState="Maximized"
        MaxWidth="{Binding Source={x:Static SystemParameters.WorkArea}, Path=Width}"
        MaxHeight="{Binding Source={x:Static SystemParameters.WorkArea}, Path=Height}"
    >
...
</Window>

しかし、私にとってはまだエラーが続き、ウィンドウは上下に数ピクセルずつオフセットされています...ウィンドウの状態を変更した後、左と上を0に設定しようとしましたが、何も起こりません。

于 2013-02-25T14:38:12.027 に答える
2

私はこの方法で問題を解決しました:

XAML:

WindowStyle="None"
Left="0"
Top="0"
Width="{Binding WPFSettings.Width}"
Height="{Binding WPFSettings.Height}">

ビジュアルベーシック:

Public Class WPFSettings
   Public ReadOnly Property Width() As Double
      Get
         Return System.Windows.SystemParameters.PrimaryScreenWidth
      End Get
   End Property

   Public ReadOnly Property Height() As Double
      Get
         Return System.Windows.SystemParameters.PrimaryScreenHeight
      End Get
   End Property
End Class

それはかなりうまくいきます。

于 2010-01-19T16:15:23.270 に答える
0

Xaml、次のバインディングを に設定しますWindow.MaxHeight

MaxHeight="{DynamicResource {x:Static SystemParameters.MaximizedPrimaryScreenHeightKey}}"

追加のユーティリティ クラスは必要ありません。

于 2010-09-02T18:39:42.827 に答える
0

私の場合、ウィンドウの XAML タグにはプロパティ SizeToContent="True" があり、それを削除するだけで済みました。

于 2011-05-13T10:23:39.863 に答える