2009-01-30 10 views
5

Quando trascino un controllo dalla casella degli strumenti sulla superficie di progettazione di Visual Studio 2008 WPF, imposta un margine in base a dove l'ho rilasciato e un valore predefinito dimensione.Come impedire al progettista VS WPF di mettere margini su ogni oggetto dalla casella degli strumenti

C'è un modo per impedire a VS di impostarli? Quando faccio cadere un controllo su un pannello di stack, voglio che venga inviato ai controlli esistenti nel pannello.

Grazie!

+0

Attualmente mi scocciano anche la merda. – Will

risposta

3

Non ho mai trovato un modo per impedirlo. Semplicemente digito lo XAML.

EDIT:

aver scritto quanto sopra quasi tre anni fa. Nel frattempo, sembrerebbe che l'esperienza in fase di progettazione sia migliorata molto.

Mentre il progettista aggiunge ancora margini hard-coded se si trascina e rilascia, ci sono modi per rimuovere quei margini senza doverlo fare a mano.

Ecco un collegamento a un articolo che illustra come utilizzare gli strumenti di progettazione in Visual Studio 2010 per creare un modulo senza dover digitare alcun XAML. (Nonostante il titolo, si tratta di WPF.)

Layout Techniques for Windows Form Developers

+0

Lo stesso qui. Il designer WPF è troppo lento e buggy per i miei gusti. – Andy

+0

Sono d'accordo. Lo stilista è riuscito a fornire una rappresentazione rappresentativa di ciò che lo xaml denota, ma non so se è persino possibile che fornisca l'incredibile esperienza di trascinamento/rilascio del progettista di winforms dato il modello sottostante radicalmente diverso. –

+1

Non vedo alcuna ragione che * non sia * possibile. È possibile eseguire il trascinamento della selezione in ASP.NET nel designer o nel markup. Non sembra un lungo passo per fare la stessa cosa in WPF. Ma per qualche ragione, Microsoft non ne ha fatto una priorità. –

0

Quando lascio cadere un controllo in uno StackPanel, non aggiunge i margini, si "scorre" con il resto.

I controlli che si posizionano sulla superficie del disegno hanno un margine di default perché è così che sa dove è posizionato. Quello che faccio di solito è creare una griglia e impostarne il margine dove lo voglio, quindi creare colonne e righe in cui inserire i controlli. Lascio cadere i miei altri controlli che aggiungeranno margini che di solito non sono quello che voglio. Dopo aver controllato tutti i miei controlli nella mia griglia, posizionati ragionevolmente, passerò alla vista XAML e rimuoverò completamente il margine (che provoca un controllo come un pulsante per riempire l'intero spazio), o rendere il margine qualcosa come 5, che mette alcuni bella imbottitura attorno al controllo.

Bottom line ... e questo è particolarmente vero con lo sviluppo di Silverlight, è necessario abituarsi a manipolare lo XAML direttamente. È l'unico modo per ottenere il layout esattamente dove lo vuoi. Questa è la mia opinione e la maggior parte di tutti nel mio negozio che fa lo sviluppo di WPF/Silverlight.

0

Sfortunatamente non sembra essere un modo per farlo.

La dimensione predefinita è impostata a seguito della manipolazione delle dimensioni del controllo è il progettista. Quando aumenti la larghezza e/o l'altezza di un controllo, il progettista interpreta le tue azioni come una richiesta per rendere il controllo quella larghezza e/o altezza specificata.

Una situazione simile si incontra con i margini. Quando modifichi la posizione del tuo controllo all'interno del designer, modifica le proprietà per ottenere il layout che hai creato. Nel caso della maggior parte dei contenitori la soluzione più semplice è quella di modificare i margini per ottenere la posizione desiderata, come hai già indicato la soluzione semplice non è sempre la più desiderata.

Personalmente preferisco utilizzare solo l'editor XAML e solo occasionalmente fare un picco in WPF Designer quando voglio vedere il layout corrente. Tendo anche a preferire l'utilizzo della griglia per il layout della maggior parte dei miei windows/controlli in quanto fornisce la massima flessibilità non solo per il dimensionamento e il posizionamento, ma per altre attività/funzionalità come animazioni, trasformazioni, ecc.

Problemi correlati