2017-02-24 54 views
1

我做了一個簡單的用戶界面,我想將邊框設置爲Grid行的底部。我瞄準了一個使用Line像這樣:WPF XAML - 行根本沒有出現

<Window x:Class="HP_hf_shop.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:local="clr-namespace:HP_hf_shop" 
    mc:Ignorable="d" 
    Title="MainWindow" Height="500" Width="800" 
    > 
<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="2*"/> 
     <RowDefinition Height="10*"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="2*"/> 
     <ColumnDefinition Width="2.5*"/> 
     <ColumnDefinition Width="2*"/> 
    </Grid.ColumnDefinitions> 
    <Border Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" VerticalAlignment="Bottom" 
      Margin="10,0,10,0"> 
     <Border.Background> 
      <LinearGradientBrush StartPoint="0,1" EndPoint="1,1"> 
       <GradientStop Color="DarkGray" Offset="0.05"/> 
       <GradientStop Color="Gray" Offset="0.15"/> 
       <GradientStop Color="Gray" Offset="0.85"/> 
       <GradientStop Color="DarkGray" Offset="0.95"/> 
      </LinearGradientBrush> 
     </Border.Background> 
    </Border> 
    <Button Grid.Row="1" Grid.Column="0" HorizontalAlignment="Stretch" 
       VerticalAlignment="Stretch" Margin="10,30,10,10"> 
     <Grid> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="5*"/> 
       <RowDefinition Height="*"/> 
      </Grid.RowDefinitions> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*"/> 
      </Grid.ColumnDefinitions> 
     </Grid> 
    </Button> 

    <Button Grid.Row="1" Grid.Column="1" HorizontalAlignment="Stretch" 
       VerticalAlignment="Stretch" Margin="10,10,10,10"> 
     <Grid> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="5*"/> 
       <RowDefinition Height="*"/> 
      </Grid.RowDefinitions> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*"/> 
      </Grid.ColumnDefinitions> 
     </Grid> 
    </Button> 

    <Button Grid.Row="1" Grid.Column="2" HorizontalAlignment="Stretch" 
       VerticalAlignment="Stretch" Margin="10,30,10,10"> 
     <Grid> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="5*"/> 
       <RowDefinition Height="*"/> 
      </Grid.RowDefinitions> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*"/> 
      </Grid.ColumnDefinitions> 
     </Grid> 
    </Button> 
</Grid> 

我用我設置了這裏,我確信,當我強調這一行本身的亮點確實有刷機的純色onstead嘗試一個覆蓋面(它看起來像一個矩形,與一條線相對,所以它應該是可見的)。 被告知我沒有使用Canvas。該行在Grid上有一些按鈕。任何想法爲什麼行不顯示,甚至在運行時?

回答

1

任何想法爲什麼行根本不顯示,甚至在運行時?

需要爲水平線設置LineX1X2屬性可以得出:

<Line Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" VerticalAlignment="Bottom" 
      HorizontalAlignment="Stretch" StrokeThickness="10" Margin="10,0,10,0" 
      X1="0" X2="100"> 
    <Line.Stroke> 
     <LinearGradientBrush StartPoint="0,1" EndPoint="1,1"> 
      <GradientStop Color="DarkGray" Offset="0.05"/> 
      <GradientStop Color="Gray" Offset="0.15"/> 
      <GradientStop Color="Gray" Offset="0.85"/> 
      <GradientStop Color="DarkGray" Offset="0.95"/> 
     </LinearGradientBrush> 
    </Line.Stroke> 
</Line> 

如果你想刷,以填補網格行,你需要使用其他元素拉伸以填充可用空間,例如Border

<Border Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" VerticalAlignment="Bottom" 
       Margin="10,0,10,0"> 
    <Border.Background> 
     <LinearGradientBrush StartPoint="0,1" EndPoint="1,1"> 
      <GradientStop Color="DarkGray" Offset="0.05"/> 
      <GradientStop Color="Gray" Offset="0.15"/> 
      <GradientStop Color="Gray" Offset="0.85"/> 
      <GradientStop Color="DarkGray" Offset="0.95"/> 
     </LinearGradientBrush> 
    </Border.Background> 
    <TextBlock /> 
</Border> 
+0

它確實有效。現在,如何將X2添加到行的末尾(因爲它被設置爲伸展)? – agiro

+0

一條線不能伸展。看到我的編輯器答案。 – mm8

+0

我複製粘貼的代碼,它運行但doens't不會出現:/ – agiro