2009-10-01 16 views
6

Nel mio progetto voglio visualizzare un piccolo logo sul lato di un controllo personalizzato. Dal momento che non ho tele ho pensato che forse un Visual Brush sarebbe stata una buona idea per posizionare il logo sullo sfondo.WPF: Aiuto! Visual Brush estende tutto il contenuto

<VisualBrush> 
    <VisualBrush.Visual> 
     <Rectangle Width="200" Height="200" Fill="Red" /> 
    </VisualBrush.Visual>     
</VisualBrush> 

Ma il rettangolo che sto usando in questo momento non è 200x200. Prende lo spazio disponibile completo. Questo non è quello che voglio. Ho anche provato una Viewbox e impostato la proprietà stretch, ma il risultato è lo stesso perché alla fine non ho bisogno di un rettangolo semplice ma di una tela con molti oggetti di percorso come figli. Una Viewbox supporta solo un bambino.

Questo è un modo per aggirare questo problema?

risposta

10

È necessario impostare TileMode, Stretch, AlignmentX e AlignmentY proprietà sul VisualBrush:

<VisualBrush TileMode="None" Stretch="None" AlignmentX="Left" AlignmentY="Top"> 
    <VisualBrush.Visual> 
     <Rectangle Height="200" Width="200" Fill="Red"></Rectangle> 
    </VisualBrush.Visual> 
</VisualBrush> 
+0

Funziona perfettamente. Molte grazie. – TalkingCode

+0

grazie mancava il TileMode = "Nessuno" e Stretch = "Nessuno" – juFo

0

Aggiungere griglia e questo alligment Set verticale verso l'alto e l'allineamento orizzontale per il codice Esempio destro

<VisualBrush x:Key="myVisual"> 
     <VisualBrush.Visual> 
      <Grid> 
       <Rectangle Height="200" Width="200" Fill="Red" HorizontalAlignment="Right" VerticalAlignment="Top" ></Rectangle> 
      </Grid> 
     </VisualBrush.Visual> 
    </VisualBrush> 
Problemi correlati