匹配listview标头到列动态uwp

时间:2016-11-08 09:22:21

标签: c# listview mvvm uwp

这就是我的列表视图当前的样子,标题可以很好地扩展到它之外的相对面板但是列保持相同的宽度

<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>

我删除了一些内容以使其更具可读性,任何帮助都将受到赞赏

1 个答案:

答案 0 :(得分:1)

首先,如果您在ColumnDefinition中只设置一个Grid,就像在listViewGridDataTemplate中设置Width="{Binding ElementName=ListViewGrid, Path=ActualWidth}"一样。这不是一个大问题,我想你只是删除它们以使代码更具可读性,这是非常好的。

其次,在UWP中,ActualWidthListViewItem不是依赖属性,它不能用于数据绑定。您可以参考FrameworkElement.ActualWidth property备注

我猜您需要的是实际延伸<ListView> <ListView.ItemContainerStyle> <Style TargetType="ListViewItem"> <Setter Property="HorizontalContentAlignment" Value="Stretch" /> </Style> </ListView.ItemContainerStyle> ... </ListView> ,然后您可以像这样编码:

setAttribute('material', 'roughness', 0.3)