2016-11-08 57 views
0

这是我的ListView目前的样子,头与外界它relativepanel很好地扩展,但列保持不变,宽度匹配的ListView头柱动态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

首先,它是没有意义的,如果你只设定一个ColumnDefinitionGrid就像你在你的listViewGrid并在DataTemplate一样。这不是一个大问题,我想你只是删除它们来使代码更具可读性,这非常好。

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

我猜你需要什么是真正的舒展ListViewItem,那么你可以简单地这样的代码:

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

为'ActualWidth'属性的文件实际上是让人有些困惑。它表示它具有'ActualWidthProperty'依赖项属性的支持,但它不像典型的依赖项属性(它不会引发属性更改通知)。依赖属性甚至可以这样做吗?那么究竟是什么呢? –

+0

@DecadeMoon,将其视为一个常规的CLR属性,我认为没有人说依赖项属​​性必须引发属性更改的通知。 –

+0

所以你说可以通过'DependencyObject.SetValue()'改变一个依赖项属性的值,而不用提高PropertyChangedCallback(属性元数据)或者任何注册的回调函数(通过'DependencyObject.RegisterPropertyChangedCallback()')? –