2009-10-01 12 views
6

In meinem Projekt möchte ich ein kleines Logo auf der Seite eines benutzerdefinierten Steuerelements anzeigen. Da ich keine Leinwand habe, dachte ich, vielleicht wäre ein Visual Brush eine gute Idee, das Logo in den Hintergrund zu stellen.WPF: Hilfe! Visual Brush streckt den gesamten Inhalt

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

Aber das Rechteck, das ich gerade benutze, ist nicht 200x200. Es nimmt den gesamten verfügbaren Platz ein. Das ist nicht was ich will. Ich habe auch eine Viewbox ausprobiert und die stretch-Eigenschaft gesetzt, aber das Ergebnis ist das gleiche, weil ich am Ende kein einfaches Rectangle brauche, sondern ein Canvas mit vielen Pfadobjekten als untergeordnete Elemente. Eine Viewbox unterstützt nur ein Kind.

Gibt es einen Weg, um dieses Problem zu umgehen?

Antwort

10

Sie müssen TileMode, setzen Stretch, AlignmentX und AlignmentY Eigenschaften auf Ihrem VisualBrush:

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

Funktioniert perfekt. Danke vielmals. – TalkingCode

+0

danke, dass ich den TileMode = "None" und Stretch = "None" fehlte – juFo

0

hinzufügen Gitter und das Set Vertical alligment nach oben und horizontale Ausrichtung nach rechts Beispielcode

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