web-dev-qa-db-ja.com

WPFウィンドウの起動場所を変更する

画面の右上でWPFウィンドウを開きたいのですが。

今のところ、ウィンドウを開いてから移動して(user32.dllのmovewindow経由で)それを実現できます。ただし、この方法では、ウィンドウがデフォルトの場所で開き、完全にロードされてから右上に移動します。

ウィンドウの初期位置とサイズを指定できるように、どうすれば変更できますか?

42
Evan

WindowStartupLocation、Height、Width、Left、およびTopをxamlで設定するだけです。

<Window x:Class="WpfApplication1.Window1" 
    xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml" 
    Title="Window1" 
    Height="500" Width="500"
    WindowStartupLocation="Manual" 
    Left="0" Top="0">
</Window>
93
Reed Copsey

WindowStartupLocation="CenterOwner"を使用したい( MSDN docs for it

呼び出し元は、次のように動作するためにこれを所有者として指定する必要があります。

new MyWindow() { Owner = this }.ShowDialog();

次に、ウィンドウの高さと幅を定義するだけです:

<Window ...
     Height="400" Width="600"
     WindowStartupLocation="CenterOwner"
>
...
2
noelicus

私のような人は、ウィンドウの位置を現在のマウスの位置に設定したい場合、次のようにできます。

myWindow.WindowStartupLocation = WindowStartupLocation.Manual;
myWindow.Left = PointToScreen(Mouse.GetPosition(null)).X;
myWindow.Top = PointToScreen(Mouse.GetPosition(null)).Y;
2

"WindowStartupLocation"と呼ばれるWindowのプロパティがあります。プロパティウィンドウで確認できます。単にコンストラクタでウィンドウを選択し、プロパティリストに移動します。 "Startup"または同様のsmthを検索すると、そのプロパティを見つけることができます。 "CenterScreen"に変更すると、取引が成立します。注意!ウィンドウではなくグリッドを選択していないことを確認してください!それ以外の場合は失敗します。

または、前に書いたように、XAML編集でそれを行うことができます。

これは私のために働いたものです(画面上の異なる配置で):

<Window x:Class="BtnConfig.MainWindow"
        xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.Microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:BtnConfig"
        mc:Ignorable="d"
        Title="MainWindow" Height="142.802" Width="448.089"
        Top="288" Left="0"> 
</Window>

次のものが含まれていないことに注意してください。

WindowStartupLocation="Manual" 
0
Michael Webb