GridViewとして使用しているWPFListViewがあります。そこに垂直グリッド線を取得する方法はありますか?
ListViewにはMinHeightが指定されているので、GridLineをグリッドの一番下まで移動して、空のスペースを埋めます。
これはかなり難しい問題のようです。解決することは可能ですか?
これが私のやり方です。
<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>
SharedSizeGroup
プロパティとプロパティは、このGrid.IsSharedSizeScope
方法の鍵です。のMargin="0,-2"
プロパティはBorder
、分割線が連続した垂直線のように見えるようにします。2 つのテキストブロックに垂直マージンを追加する場合、境界線の負の垂直マージンを増やす必要があります。
これにより、間に垂直線がある 2 つの均一なサイズの列に物事を並べることができますが、データのない領域には拡張されません。その機能が必要な場合、ListView は最適なオプションではない可能性があります。
ViewModelのプロパティにデータを追加するMyList
と、結果として次のようになります。
もちろん、プロパティはプロパティとしてとMyList
を持つクラスのリストまたはコレクションである必要があります。Name
DateModified