2012-09-25 6 views
9

Ich möchte nur windowstartuplocation oben rechts auf dem Desktop festlegen. Nun, einige Dinge zu klären, habe ich diesen Thread mit derselben Frage:Wie setze ich WPF-Anwendungsfensterstartuplocation mit xaml in die obere rechte Ecke?

Changing the start up location of a WPF window

Jetzt will ich nicht verwirrt bekommen, was sie als richtig beziehen oder links, ich möchte, dass meine Anwendung starten in oben rechts, wo rechts bezieht sich auf meine rechte Seite (nicht, als ob mein Desktop eine Person ist, die mich und seine rechte Seite) .So,

1.) Einstellung links und oben auf 0 ist nur keine Lösung (bringt App auf der linken Seite nicht richtig)

2.) Ich habe versucht, mit SystemParameters.PrimaryScreenWidth, aber ich kann die Operation zu subtrac nicht ausführen t die Breite meiner App von diesem Wert zum Zeitpunkt der Bindung.

Gibt es einen Weg, wie ich es ohne viel Komplexität machen kann?

Antwort

16

Gibt es einen Weg, ich kann es tun, ohne in viel Komplexität zu gehen?

Der einfachste Weg, um Ihre Startposition zu Setup manuell würde, und dann die Left Eigenschaft im Code hinter:

<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" 
    Top="0"> 
</Window> 

In Ihrem Code hinter:

public Window1() 
{ 
    InitializeComponent(); 
    this.Left = SystemParameters.PrimaryScreenWidth - this.Width; 
} 

Dies ist ein Der Ort, an dem ich glaube, dass die Einfachheit, es in Code zu machen, alle Nachteile der Einführung von Code überwiegt.

+2

Für Leute, die es wollen, links zu öffnen: http://stackoverflow.com/questions/1545258/changing-the-start-up-location-of-a-wpf-window –

+0

Setting ‚Windowstartup =“ Manual '' ist der Schlüssel dafür. – WhoCares

0

Stellen Sie mithilfe von WorkArea.Width sicher, dass die Breite der Taskleiste berücksichtigt wird (bei Platzierung auf einer Seite, links oder rechts). Wenn Sie this.Width oder this.MaxWidth verwenden, stellen Sie sicher, dass Ihr Fenster niemals aus dem Arbeitsbereich herausrutscht, aber beide müssen ihren Wert (in xaml oder in Code dahinter) setzen, um nicht den Wert NaN (Not a Number) dafür zu erzeugen.Left .

public MainWindow() 
    { 
     InitializeComponent(); 
     this.Left = SystemParameters.WorkArea.Width - this.MaxWidth; 
    } 

<Window 
    ... more code here ... 
    WindowStartupLocation="Manual" Top="0" MaxWidth="500" > 
Verwandte Themen