webentwicklung-frage-antwort-db.com.de

Ändern des Startorts eines WPF-Fensters

Ich möchte, dass oben rechts im Bildschirm ein WPF-Fenster geöffnet wird.

Im Moment kann ich das erreichen, indem ich das Fenster öffne und es dann verschiebe (über movewindow in user32.dll). Dieser Ansatz bedeutet jedoch, dass das Fenster an der Standardposition geöffnet, vollständig geladen und dann nach rechts oben verschoben wird.

Wie kann ich es ändern, um die ursprüngliche Position und Größe des Fensters festzulegen?

42
Evan

Legen Sie einfach WindowStartupLocation, Height, Width, Left und Top in xaml fest:

<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

Ich benutze gerne WindowStartupLocation="CenterOwner" ( MSDN-Dokumente dafür )

Der Anrufer muss sich selbst als Eigentümer angeben, damit dies funktioniert. Beispiel:

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

Definieren Sie dann einfach die Höhe und Breite des Fensters, z.

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

Für Leute, die wie ich die Position des Fensters auf die aktuelle Mausposition setzen wollten, können Sie dies folgendermaßen tun:

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

Für Window gibt es eine Eigenschaft namens "WindowStartupLocation" Sie finden das im Eigenschaftenfenster. Wählen Sie einfach im Konstruktor Fenster aus und gehen Sie zur Eigenschaftenliste. Suchen nach "Startup" oder ähnliches und Sie können diese Eigenschaft finden. Ändere es in "CenterScreen" und es wird das Geschäft machen. HINWEIS! Stellen Sie sicher, dass Sie nicht Raster statt Fenster gewählt haben! Sonst scheitern Sie.

Oder Sie können es einfach über XAML-Bearbeitung tun, wie einige Leute zuvor geschrieben haben.

Das hat bei mir funktioniert (mit einer anderen Platzierung auf dem Bildschirm):

<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>

Beachten Sie, dass es nicht enthält:

WindowStartupLocation="Manual" 
0
Michael Webb