2014-12-04 72 views
0

我有一個ListView:修改的ListView的ItemTemplate在運行時

  <ListView> 
       <ListView.ItemTemplate> 
        <DataTemplate> 
          <Grid Height="90" HorizontalAlignment="Stretch" Background="Gray"> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="100"/> 
            <ColumnDefinition Width="1.2*"/> 
            <ColumnDefinition x:Name="changeThis" Width="140"/> 
            <ColumnDefinition Width="*"/> 
            <ColumnDefinition Width="45"/> 
           </Grid.ColumnDefinitions> 
           ... 
          </Grid> 
        </DataTemplate> 
       </ListView.ItemTemplate> 
      </ListView> 

當屏幕方向改變爲縱向我想第3(140px寬)列消失,所以其他列留下適當可見。我使用VisualStateManager來管理方向更改,但如果我嘗試將「changeThis」ColumnDefinition更改爲0,則會出現異常。奇怪的是,我無法從後面的代碼中訪問「changeThis」ColumnDefinition。這是一個Windows應用商店應用。

回答

0

不幸的是,x:Name是項目模板本地的,無法從外部訪問。

可能的解決方案有: 1:將寬度綁定到屬性。 {Binding DataContext.MyColumnWidth,ElementName = LayoutRoot}

2:使用ItemTemplateSelector和不同模板進行方向。