2016-11-08 62 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()')? –