2012-06-28 84 views
6

說我有一個很簡單的WPF網格(6行×6列)定義如下:WPF網格 - 繪圖自定義網格線

<Grid.RowDefinitions> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="Auto" /> 
</Grid.RowDefinitions> 

<Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="Auto"/> 
</Grid.ColumnDefinitions> 

我想以下網格線(單實線和兩條虛線)繪製的(我在Excel中畫了這所以忽略光Excel中網格線)如下:

enter image description here

我怎麼可能去在XAML這樣做呢?

回答

14

您可以將Line s放置在所需單元格的頂部,通過設置VerticalAlignment="Top",適當Grid.ColumnSpan,並設置StrokeDashArray獲得虛線。

編輯:以上只是從我的頭頂,我似乎忘記了WPF的幾個「特色」。

這是我的工作得到了樣品。我把它放在一個五行和五列的網格中,星形大小。

<Line Grid.Row="0" Grid.Column="1" Grid.RowSpan="2" Grid.ColumnSpan="2" 
    VerticalAlignment="Center" Stroke="Black" StrokeThickness="1" 
    X2="{Binding Path=ActualWidth, RelativeSource={RelativeSource Self}}" /> 
<Line Grid.Row="1" Grid.Column="2" Grid.RowSpan="2" Grid.ColumnSpan="2" 
    VerticalAlignment="Center" Stroke="Black" StrokeThickness="2" StrokeDashArray="5,3" 
    X2="{Binding Path=ActualWidth, RelativeSource={RelativeSource Self}}" /> 

注意:如果行的大小不同,那將不起作用,因爲它將行集中在兩行中。如果他們將在大小不等,則需要VerticalAlignment="Top",但要注意,該行的上半部分將被裁剪。

+0

我試過你的建議,但由於某些原因,該行不顯示。我的XAML如下:<線Grid.Row = 「1」 Grid.Column = 「1」 VerticalAlignment = 「頂」 中風= 「黑」 StrokeThickness = 「1」/> –

+0

我的壞。我認爲那是因爲這條線很奇怪,因爲它可以拉伸而不用拉伸線。我正在尋找解決方案。 –

+1

@RandyMinder你設置了'X2'屬性嗎?它定義了線的寬度 – Rachel

0

網格單元沒有網格線,但效果是很容易簡單地把Rectangle(S)與細胞內的明確Stroke(S)來完成...

編輯:沒有虛線通知要求,因爲您可以在單元格內放置另一個具有一行和所需列數的網格,並將矩形以及筆畫放置在非雙眼單元內...