2009-06-03 16 views

risposta

14

Utilizzare un Grid come elemento di livello superiore nell'interfaccia utente - verrà esteso per riempire il suo contenitore. Quindi inserisci un Canvas con HorizontalAlignment="Stretch" all'interno dello Grid e si comporterà come vuoi.

<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Canvas Background="Blue"/> 
</Grid> 

Questo ha funzionato per me. La chiave è l'elemento dell'interfaccia utente di primo livello. Mentre uno Grid riempie tutto lo spazio disponibile per impostazione predefinita, i numeri Canvas occupano solo lo spazio richiesto dal loro contenuto.

+0

Sai se l'attributo "x: Class =" è necessario? Ho provato a utilizzare Grid come contenimento ma per qualche motivo tutto scompare. – resopollution

+0

questo non ha funzionato per me = ( – resopollution

+1

come stai testando ho incollato questo in kaxaml e funziona per me, quindi non è necessario l'x: attributo di classe:

1

È possibile utilizzare un pannello di dock per farlo riempire la larghezza disponibile. L'ultimo elemento in un elenco di controlli del pannello del dock viene automaticamente esteso per riempire lo spazio rimanente.

<DockPanel> 
    <Canvas /> 
</DockPanel> 
+0

C'è un modo rapido per farlo per il tag ? – resopollution

+0

Ho provato a rimuovere la proprietà Height and Width ma tutto scompare. – resopollution

1

La tela deve eseguire questa operazione automaticamente, a meno che non si stiano impostando manualmente l'altezza e/o la larghezza. Che tipo di controllo stai provando a posizionare la tela? Puoi pubblicare il tuo codice?

+0

Ho pubblicato il mio codice. La tela è l'elemento principale principale dell'intera applicazione. – resopollution

+0

Ho provato a rimuovere la proprietà Height and Width ma tutto scompare. – resopollution

4

Sto cercando di indovinare che hai provato
canvas.HorizontalAlignment = HorizontalAlignment.Stretch

Se questo non funziona, allora quello che si potrebbe fare è legare i Width e Height proprietà della tela per le ActualWidth e ActualHeight proprietà del contenente finestra.

+0

canvas.HorizontalAlignment = HorizontalAlignment.Stretch è fatto all'interno del codice C#? Ho solo accesso a XAML. Anche io non ho una finestra che contiene = (. Ogni volta che faccio l'elemento Binding, la mia app Silverlight si blocca. – resopollution

+1

Un po 'tardi, ma per chiunque abbia lo stesso problema: '' '' nel codice XAML funzionava bene nel mio caso e ti salva dal boxing di ogni tela in una griglia (specialmente se ne hai molti) –

1

Il problema è che si specifica Height e Width. Senza queste proprietà, potrebbe sembrare che il controllo svanisca nel progettista, ma deve ridimensionare in modo appropriato quando si inserisce la tela in un altro controllo.

Se ricordo correttamente, la prossima versione di WPF avrà proprietà 'DesignWidth' e 'DesignHeight' che consentono di mostrare il controllo nel progettista con una data dimensione senza influire sulla sua misura quando inserito in altri controlli.

Problemi correlati