簡體   English   中英

如何使ListView的項目占據所有可用高度?

[英]How can i make a ListView's items take up all the available height?

我正在嘗試使用WPF制作柱形圖。 對於Y軸,我有一個要在控件上顯示的值列表。

我有一個ListView綁定到集合。 如何使項目散布在列表視圖的整個長度上,而不是在頂部擠壓在一起? ListView是用於此的正確控件嗎?

這是我的Xaml的示例:

<ListView Grid.Row="1" Grid.Column="1" Grid.RowSpan="2" 
          ItemsSource="{Binding YAxisValues}" 
          Background="Gray" VerticalContentAlignment="Stretch">
    <ListView.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <Label Content="{Binding Path=Value}" 
                       Foreground="White" 
                       HorizontalAlignment="Left" 
                       FontSize="12" Width="50"/>
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

所需的ListView

左邊是我當前擁有的列表視圖。 右邊是我想要的結果。

如何更改ListView到達那里? 還是我需要完全使用其他控件?

將UniformGrid用作ItemsPanel的項目獲得相等的高度

<ListView Name="Axis" Grid.Row="1" Grid.Column="1" Grid.RowSpan="2" 
        ItemsSource="{Binding YAxisValues}"
        Background="Gray" VerticalContentAlignment="Stretch"              
        ScrollViewer.VerticalScrollBarVisibility="Disabled">
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid Columns="1"/>
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
    <ListView.ItemTemplate>
        <!--no changes-->
    </ListView.ItemTemplate>
</ListView>

當ListView的高度不足以容納所有元素時,可能會出現問題。 在那種情況下,我會將ListView放入ViewBox

HorizontalContentAlignment設置為Stretch

       <ListView>
            <ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                </Style>
            </ListView.ItemContainerStyle>
        </ListView>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM