2011-01-28 12 views
12

Ho una finestra impostata su 340 x 146 px, non ridimensionabile.Perché una finestra è più grande in runtime?

Nella finestra di progettazione la dimensione della finestra è corretta. Ma quando eseguo l'applicazione è più grande. enter image description here

Modifica: Inoltre, il layout è Canvas.

Tema Classic:

enter image description here

Edit2:

Dopo l'esecuzione di Snoop (grazie Zach), sembra che le dimensioni reali sono ciò che ho specificato. Ma l'area client è più grande di quella in Visual Studio.

Capisco ora che la dimensione del client si allunga, quando la dimensione di Windows è fissa a certe dimensioni. Comunque penso che ciò rende inutilizzabile il layout della tela nella finestra.

Edit3:

<Window x:Class="TI.Presentation.Views.AutentizationWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Authentication" Height="146" Width="340" ResizeMode="NoResize" Background="{StaticResource {x:Static SystemColors.ControlBrushKey}}" > 
    <Canvas> 
     <Label Canvas.Left="12" Canvas.Top="12" FontSize="15" Width="217">Enter authentication code here:</Label> 
     <TextBox Canvas.Left="12" Canvas.Top="38" Height="23" Name="code" Width="294" FontSize="14" /> 
     <Button Canvas.Top="67" Content="OK" Height="28" Width="100" Canvas.Left="206" FontSize="14" IsDefault="True" Click="OKClick" /> 
    </Canvas> 
</Window> 
+0

Le dimensioni cambiano sulla stessa macchina o tra le macchine? –

+0

@ Ben lo proverò. – Kugel

+0

sospetto che abbia qualcosa a che fare con i margini ... vedi cosa succede se imposti il ​​margine del contenitore genitore a 0 completamente –

risposta

6

Ho intenzione di rispondere a me stesso dopo aver frugato in giro.

Le finestre ActualWith e ActualHeight sono uguali a Larghezza e Altezza impostate nel designer.

Quali modifiche, è l'area client. Le dimensioni del cliente saranno dimensioni della finestra meno il bordo del tema. Ciò, tuttavia, interrompe la progettazione del Canvas perché le sue dimensioni di canvas e posizionate in modo assoluto sono state modificate in base al tema.

Il modo di fare funzionare la tela. È per impostare le dimensioni su Canvas, rimuovere le dimensioni sulla finestra e impostare SizeToContent sulla finestra di conseguenza. In questo modo, le dimensioni delle cavità rimangono fisse e le dimensioni della finestra cambiano in base al modo in cui si pensa al bordo del tema.

+0

La soluzione SizeToContent ha risolto il problema per me, grazie! – Funbit

1

Semplicemente perché il formato u specificare dosent tener conto del confine che sarà presa dalla corrente Tema del sistema operativo ... Se si sta impostando 200x200 hai trovato quello spazio pieno. non vorresti che fosse ridotto a 190x190 a causa del bordo 5px su entrambi i lati. e anche questo cambierà al tema corrente sul sistema operativo, come Aero, Classic, ecc.

+3

Ma penso che stia parlando del _padding_ nella finestra, specialmente sul lato destro. – kprobst

+1

questa è una risposta errata notato come gli interni della finestra diventano più grandi? – Kugel

+0

oh scusa non l'ho notato ... fammi vedere come rispondere per quello ... –

0

Probabilmente sto affermando l'ovvio, ma sembra che il tema di Windows sia la differenza. Come si confronta se si passa al tema classico di Windows.

1

La finestra dispone di un set DesignHeight e DesignWidth? Vedi WPF UserControl Design Time Size.

Modifica: Il mio prossimo pensiero sarebbe quello di provare a utilizzare Snoop per vedere in fase di esecuzione ciò che è esattamente diverso. Sono le dimensioni, il padding, il margine o qualcos'altro?

+0

No, non è così. – Kugel

+0

@Kugel: Hmmm ... ok. Ho modificato la mia risposta con un altro suggerimento. –

+0

Poco prima di leggere il tuo commento ho avviato l'installazione di Snoop. :-) – Kugel

Problemi correlati