2011-05-31 156 views
7

這是我到目前爲止。如何繪製水平線並居中?

當手機垂直:

enter image description here

當手機橫向: enter image description here

這裏是我的XAML標記:

<StackPanel Margin="19 0 19 5"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="110" /> 
      <ColumnDefinition /> 
     </Grid.ColumnDefinitions> 

     <Image Grid.Column="0" Source="{Binding ImageUrl}" 
       Stretch="Uniform" 
       Margin="0 10 0 10"/> 

     <StackPanel Grid.Column="1" Margin="14 0 0 0"> 
      <TextBlock Text="{Binding Title}" 
         FontSize="30" /> 
      <TextBlock Text="{Binding ReleaseDate}" 
         FontSize="22" 
         Foreground="#E0A655"/> 
      <TextBlock Text="{Binding Synopsis}" 
         FontSize="22" 
         TextWrapping="Wrap"/> 
     </StackPanel>               
    </Grid> 
    <Line StrokeThickness="4" Stroke="#434343" X1="0" X2="350" 
     Y1="13" Y2="13" /> 
</StackPanel> 

我想有一行與目前的寬度相同,但居中。但是,當手機處於水平狀態時,該線路應該更大一些,以解決更廣泛的可用空間。

這可能嗎?

回答

12

您可以通過使用保證金來調整您的內容而不是位置的大小。

如果使用Line(我沒有真正檢查過)不可能,那麼您可以嘗試使用1像素高(或4)而不是Rectangle。

編輯:用代碼片段:

<Line HorizontalAlignment="Stretch" Margin="50, 10, 50, 10" Stroke="Black" StrokeThickness="4" /> 
+0

哇,工作比預期好。 :)當計時器達到零時,我會將此標記爲已解決。 – 2011-05-31 13:01:49

+0

爲什麼downvote? – jv42 2011-05-31 13:02:00

+0

我沒有倒下,別人也沒有。 – 2011-05-31 13:03:25

12

您可以使用Stretch使你Line佔據容器的整個寬度。您還可以使用左/右頁邊距在每邊加少許空間:在第一種觀點

<Line X1="0" X2="1" Stretch="Fill" Margin="20,0,20,0"/> 
1

也許有點出人意料:行(以及其他形狀 - 矩形,橢圓...)是FrameworkElements 。您可以像處理TextBlock一樣處理它們,即設置尺寸,對齊,邊距,不透明度,變換等等。您甚至可以動畫/綁定形狀定義屬性(如Line.X1),因爲它們都是DependencyProperties。