2014-12-04 106 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和不同模板进行方向。