2012-04-06 12 views
3

Ich habe eine WPF-ListView, die ich als GridView verwende. Gibt es irgendeine Möglichkeit, dass ich dort vertikale Gitternetzlinien bekommen kann?Vertikale Gitternetzlinien in einem ListView

Die ListView hat eine MinHeight angegeben, daher möchte ich, dass die GridLine den ganzen Weg bis zum Ende des Rasters geht, also füllt sie den leeren Platz aus.

Dies scheint ein ziemlich kniffliges Problem zu sein. Ist es möglich zu lösen?

+0

hast du diese Frage geprüft http://stackoverflow.com/questions/5645078/how-to-put-vertical-lines-for-listviewitem-in-wpf – Habib

+0

es ist ein Anfang, aber nicht das, was ich suche . Die Gitternetzlinien sind nicht unter der Kopfzeile angeordnet, und es sieht auch nicht so aus, als ob sie alle bis zum Ende der Listenansicht gezeichnet würden. –

Antwort

1

So mache ich es.

 <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> 

Die SharedSizeGroup und Grid.IsSharedSizeScope Eigenschaften sind der Schlüssel zu dieser Art und Weise tun. Die Margin="0,-2" Eigenschaft auf der Border stellt sicher, dass die Trennlinie wie eine durchgehende vertikale Linie aussieht. Wenn Sie den beiden Textblöcken einen vertikalen Rand hinzufügen, müssen Sie den negativen vertikalen Rand des Rands erhöhen.

Dies wird dafür sorgen, dass die Dinge in zwei gleich große Spalten mit einer vertikalen Linie zwischen ihnen angeordnet werden, aber es wird sich nicht in Bereiche erstrecken, in denen keine Daten vorhanden sind. Ein ListView ist möglicherweise nicht die beste Option, wenn Sie diese Funktionalität möchten.

einige Daten auf die MyList Eigenschaft im Ansichtsmodell Hinzufügen gibt dies als Ergebnis: enter image description here

Natürlich ist die MyList Eigenschaft muss eine Liste oder Sammlung einer Klasse sein, die Name und DateModified als Eigenschaften aufweist.

+1

Das funktioniert nicht. –

Verwandte Themen