2012-04-06 76 views
3

我有一個WPF ListView,我用它作爲GridView。有什麼方法可以在那裏獲得垂直網格線?ListView中的垂直網格線

ListView具有指定的MinHeight,所以我希望GridLine一路走到網格的底部,所以它會填充空白空間。

這似乎是一個相當棘手的問題。是可以解決的嗎?

+0

你是否檢查這個問題http://stackoverflow.com/questions/5645078/how-to-put-vertical-lines-for-listviewitem-in-wpf – Habib 2012-04-06 16:05:10

+0

這是一個開始,但不是我要找的東西。網格線沒有排列在標題下,也沒有顯示它將一直繪製到列表視圖的底部 – 2012-04-06 16:28:14

回答

1

這就是我的做法。

 <ListView Grid.IsSharedSizeScope="True" 
       ItemsSource="{Binding Path=MyList,FallbackValue='12345'}" > 
     <ListView.ItemTemplate> 
      <DataTemplate> 
      <Grid> 
       <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="3*" SharedSizeGroup="col0"/> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="1*" SharedSizeGroup="col2"/> 
       </Grid.ColumnDefinitions> 
       <TextBlock Grid.Column="0" Margin="10,0" 
         Text="{Binding Path=Name, FallbackValue='Name goes here'}"/> 
       <Border Grid.Column="1" Margin="0,-2" 
        BorderBrush="DarkGray" 
        BorderThickness="0,0,1,0" /> 
       <TextBlock Grid.Column="2" Margin="10,0" 
         Text="{Binding Path=DateModified, FallbackValue='Date goes here'}"/> 
      </Grid> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
     </ListView> 

SharedSizeGroupGrid.IsSharedSizeScope性能的關鍵是做的這樣。 Border上的Margin="0,-2"屬性確保分隔線看起來像一條連續的垂直線。如果向兩個文本塊添加垂直邊距,則需要增加邊界的負垂直邊距。

這將照顧到事情成兩個統一大小的列與他們之間的垂直線,但它不會延伸到沒有數據的地方。如果你想要這個功能,ListView可能不是最好的選擇。

添加一些數據的視圖模型的MyList屬性給出這個結果: enter image description here

當然,MyList屬性需要是具有NameDateModified爲屬性的類的列表或集合。

+1

這不起作用。 – 2017-02-25 04:56:49