2012-09-25 24 views
9

Solo quiero establecer el inicio de la ventana en la esquina superior derecha del escritorio. Ahora bien, para aclarar algunas cosas, vi este hilo con la misma pregunta:¿Cómo configurar la ventana de la aplicación WPF desde la ubicación inicial en la esquina superior derecha usando xaml?

Changing the start up location of a WPF window

Ahora no quiero que se confunda con lo que se están refiriendo como derecha o izquierda, quiero que mi aplicación se inicie en esquina superior derecha, donde el derecho se refiere a MI LADO DERECHO (no como si mi computadora es una persona mirándome a mí Y SU LADO DERECHO). Así que,

1.) configurar izquierda y arriba a 0 solo no es una solución (trae la aplicación al lado izquierdo no a la derecha)

2.) Intenté usar SystemParameters.PrimaryScreenWidth, pero no puedo realizar la operación a subtrac El ancho de mi aplicación desde este valor en el momento de la vinculación.

¿Hay alguna manera de hacerlo sin entrar en mucha complejidad?

Respuesta

16

¿Hay alguna manera de hacerlo sin entrar en mucha complejidad?

La forma más sencilla sería la de configurar su ubicación de inicio manualmente, y luego establecer la propiedad Left en código detrás:

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

En su código detrás:

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

Esta es una lugar donde siento la simplicidad de hacerlo en el código pesa cualquier desventaja de introducir código detrás.

+2

para personas que quieren que se abra a la izquierda: http://stackoverflow.com/questions/1545258/changing-the-start-up-location-of-a-wpf-window –

+0

Setting 'WindowStartupLocation =" El manual "'es clave para que esto funcione. – WhoCares

0

Al usar WorkArea.Width, asegúrese de tener en cuenta el ancho de la barra de tareas (cuando se coloca de lado, izquierda o derecha). Al usar this.Width o this.MaxWidth, asegúrese de que su ventana nunca se deslice fuera del área de trabajo, pero ambos requieren que se establezca su valor (en xaml o en código detrás) para no producir el valor NaN (Not a Number) para esto. .

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

<Window 
    ... more code here ... 
    WindowStartupLocation="Manual" Top="0" MaxWidth="500" > 
Cuestiones relacionadas