2014-12-04 3 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 Store.

ответ

0

К сожалению, x: Имя является локальным для шаблона элемента и к нему нельзя получить доступ извне.

Возможные решения: 1: Привязать ширину к собственности. {Binding DataContext.MyColumnWidth, ElementName = LayoutRoot}

2: Используйте ItemTemplateSelector с различными шаблонами для ориентации.

Смежные вопросы