这就是我的列表视图当前的样子,标题可以很好地扩展到它之外的相对面板但是列保持相同的宽度
<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>
我删除了一些内容以使其更具可读性,任何帮助都将受到赞赏
答案 0 :(得分:1)
首先,如果您在ColumnDefinition
中只设置一个Grid
,就像在listViewGrid
和DataTemplate
中设置Width="{Binding ElementName=ListViewGrid, Path=ActualWidth}"
一样。这不是一个大问题,我想你只是删除它们以使代码更具可读性,这是非常好的。
其次,在UWP中,ActualWidth
,ListViewItem
不是依赖属性,它不能用于数据绑定。您可以参考FrameworkElement.ActualWidth property的备注。
我猜您需要的是实际延伸<ListView>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>
...
</ListView>
,然后您可以像这样编码:
setAttribute('material', 'roughness', 0.3)