【问题标题】:Modify ListView ItemTemplate at runtime在运行时修改 ListView ItemTemplate
【发布时间】:2014-12-04 23:51:50
【问题描述】:

我有一个 ListView:

           <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 列(140 像素宽)消失,以便其他列保持正常可见。我使用 VisualStateManager 来管理方向更改,但如果我尝试将“changeThis”ColumnDefinition 更改为 0,则会出现异常。奇怪的是,我无法从后面的代码访问“changeThis”ColumnDefinition。它是一个 Windows 应用商店应用程序。

【问题讨论】:

    标签: c# xaml listview grid itemtemplate


    【解决方案1】:

    遗憾的是,x:Name 是项目模板的本地名称,无法从外部访问。

    可能的解决方案是: 1:将宽度绑定到属性。 {绑定 DataContext.MyColumnWidth, ElementName=LayoutRoot}

    2:使用具有不同方向模板的 ItemTemplateSelector。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-07
      相关资源
      最近更新 更多