动态匹配列表视图标题和列
本文关键字:标题 视图 列表 动态 | 更新日期: 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
,就像在listViewGrid
和DataTemplate
中所做的那样,这是没有意义的。这不是一个大问题,我猜你只是删除了它们,使代码更容易读,这是非常好的。
其次,在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>