3

GridViewとして使用しているWPFListViewがあります。そこに垂直グリッド線を取得する方法はありますか?

ListViewにはMinHeightが指定されているので、GridLineをグリッドの一番下まで移動して、空のスペースを埋めます。

これはかなり難しい問題のようです。解決することは可能ですか?

4

1 に答える 1

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>

SharedSizeGroupプロパティとプロパティは、このGrid.IsSharedSizeScope方法の鍵です。のMargin="0,-2"プロパティはBorder、分割線が連続した垂直線のように見えるようにします。2 つのテキストブロックに垂直マージンを追加する場合、境界線の負の垂直マージンを増やす必要があります。

これにより、間に垂直線がある 2 つの均一なサイズの列に物事を並べることができますが、データのない領域には拡張されません。その機能が必要な場合、ListView は最適なオプションではない可能性があります。

ViewModelのプロパティにデータを追加するMyListと、結果として次のようになります。 ここに画像の説明を入力

もちろん、プロパティはプロパティとしてとMyListを持つクラスのリストまたはコレクションである必要があります。NameDateModified

于 2012-04-06T18:13:38.603 に答える