2013-08-20 96 views
1

我在我的問題中使用的XAML是直接從SO上的this問題獲取的。這只是XAML創建一個平鋪的DrawingBrush來渲染矩形(在我的情況下正方形)對畫布的背景。我的問題是,這個XAML只有當我將畫布的寬度和高度設置爲「自動」以外的任何其他功能時才起作用。但是當我將canvasMain的寬度和高度設置爲自動時,在背景上不繪製正方形。畫布上畫的畫筆不起作用

如何將寬度和高度設置爲「自動」,並讓DrawingBrush在我的畫布上呈現正方形?

這是我的XAML:

<Window.Resources> 
    <DrawingBrush x:Key="GridTile" Stretch="None" TileMode="Tile" 
    Viewport="0,0 20,20" ViewportUnits="Absolute"> 
    <!-- ^^^^^^^^^^^ set the size of the tile--> 
    <DrawingBrush.Drawing> 
     <GeometryDrawing> 
     <GeometryDrawing.Geometry> 
      <!-- draw a single X --> 
      <GeometryGroup> 
      <!-- top-left to top-right --> 
      <LineGeometry StartPoint="0,0" EndPoint="20,0" /> 

      <!-- top-left to bottom-left --> 
      <LineGeometry StartPoint="0,0" EndPoint="0,20" /> 

      <!-- bottom-left to bottom-right --> 
      <LineGeometry StartPoint="0,20" EndPoint="20,20" /> 

      <!-- top-right to bottom-right --> 
      <LineGeometry StartPoint="20,0" EndPoint="20,20" /> 

      </GeometryGroup> 
     </GeometryDrawing.Geometry> 
     <GeometryDrawing.Pen> 
      <!-- set color and thickness of lines --> 
      <Pen Thickness="1" Brush="Silver" /> 
     </GeometryDrawing.Pen> 
     </GeometryDrawing> 
    </DrawingBrush.Drawing> 
    </DrawingBrush> 
    <DrawingBrush x:Key="OffsetGrid" Stretch="None" AlignmentX="Left" AlignmentY="Top"> 
    <DrawingBrush.Transform> 
     <!-- set the left and top offsets --> 
     <TranslateTransform X="0" Y="0" /> 
    </DrawingBrush.Transform> 
    <DrawingBrush.Drawing> 
     <GeometryDrawing Brush="{StaticResource GridTile}" > 
     <GeometryDrawing.Geometry> 
      <!-- set the width and height filled with the tile from the origin --> 
      <RectangleGeometry Rect="0,0 160,160" /> 
     </GeometryDrawing.Geometry> 
     </GeometryDrawing> 
    </DrawingBrush.Drawing> 
    </DrawingBrush> 
</Window.Resources> 

<Canvas Name="canvasMain" HorizontalAlignment="Left" Margin="0,0,0,0" VerticalAlignment="Top" Width="Auto" Height="Auto" Background="{StaticResource OffsetGrid}"></Canvas> 

回答

2

嘗試改變路線:

<Canvas Name="canvasMain" HorizontalAlignment="Stretch" Margin="0,0,0,0" VerticalAlignment="Stretch" Width="Auto" Height="Auto" Background="{StaticResource OffsetGrid}"></Canvas>