私は WPF アプリケーションを作成しており、ウィンドウをボーダレスにし、上からのみサイズ変更できるようにしたいと考えています。
これまでに試したこと
私は当初、これがうまくいくと思っていました:
<Window x:Class="WpfApplication3.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Width="200" Height="150" WindowStyle="None" ResizeMode="CanResize" AllowsTransparency="True" BorderThickness="0,5,0,0" BorderBrush="Black"> <Grid Background="Gray" /> </Window>
上枠のみのウィンドウが表示されますが、サイズを変更できません。
それから私はで試し
WindowChrome.ResizeGripDirection="Top"
ましたResizeMode="CanResizeWithGrip"
。<Window ... WindowStyle="None" ResizeMode="CanResizeWithGrip" AllowsTransparency="True" WindowChrome.ResizeGripDirection="Top" BorderThickness="0,5,0,0" BorderBrush="Black"> ... </Window>
これも機能せず (上部の境界線からサイズを変更できません)、グリップは上部に表示されません。右下隅にとどまります(ただし、グリップでサイズを変更できます)。
この回答は、回答者が最初にこれを行った可能性があるようですが、コードは利用できません。
- この回答にはブログ投稿へのリンクがあります。コードビハインドのないソリューションが欲しいので、試してみたいとはあまり思っていません。
そして、この答えがあります:
このアプローチではエラーが発生します。
<Window ... WindowStyle="None" ResizeMode="CanResizeWithGrip" AllowsTransparency="False"> <Grid Background="Gray" /> <Setter Property="WindowChrome.WindowChrome"> <Setter.Value> <WindowChrome CornerRadius="0" GlassFrameThickness="1" UseAeroCaptionButtons="False"/> </Setter.Value> </Setter> </Window>
プロパティ「コンテンツ」が複数回設定されています。
コードビハインドあり:
<Window ... WindowStyle="None" ResizeMode="CanResize" AllowsTransparency="False"> <Grid Background="Gray" /> </Window>
コンストラクターで:
WindowChrome chrome = new WindowChrome(); chrome.CornerRadius = new CornerRadius(0); chrome.GlassFrameThickness = new Thickness(0, 1, 0, 0); chrome.UseAeroCaptionButtons = false;
それは私に与えます:
そして、これはあらゆる方向からサイズ変更できます。そして、上からサイズ変更できるようにしたいだけです。
chrome
(驚いたことに、私は新しいオブジェクトを何にも割り当てていませんでした。それはどのように機能したのでしょうか? それは私が推測する別の質問です)。
質問
上部の境界線でのみサイズ変更できるボーダレスウィンドウを作成するにはどうすればよいですか? (色を変更できる上の境界線だけでこれを行うことができれば最高です)。