动态匹配列表视图标题和列

本文关键字:标题 视图 列表 动态 | 更新日期: 2023-09-27 18:16:50

这是我的listview目前的样子,标题与外部的relativepanel的比例很好,但列保持相同的宽度

<Grid Name="ListViewGrid" HorizontalAlignment="Stretch">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition />
            </Grid.RowDefinitions>
            <Grid x:Name="listViewGrid" >
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Column="0" Text="Observation ID" />
            </Grid>
            <ListView x:Name="listView" Grid.Row="1" ItemsSource="{Binding Observations}" HorizontalAlignment="Stretch">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <Grid Width="{Binding ElementName=ListViewGrid, Path=ActualWidth}">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                            </Grid.ColumnDefinitions>
                            <TextBlock Grid.Column="0" Text="{Binding ObservationID}" />
                        </Grid>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
        </Grid>

我已经删除了一些东西,使其更易于阅读,任何帮助将不胜感激

动态匹配列表视图标题和列

首先,如果在Grid中只设置一个ColumnDefinition,就像在listViewGridDataTemplate中所做的那样,这是没有意义的。这不是一个大问题,我猜你只是删除了它们,使代码更容易读,这是非常好的。

其次,在UWP中,Width="{Binding ElementName=ListViewGrid, Path=ActualWidth}"ActualWidth不是依赖属性,不能用于数据绑定。您可以参考FrameworkElement的备注。ActualWidth财产。

我猜你需要的实际上是拉伸ListViewItem,然后你可以简单地编写如下代码:

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