在运行时修改列表视图项模板

本文关键字:视图 列表 运行时 修改 | 更新日期: 2023-09-27 18:33:14

我有一个列表视图:

           <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"列定义更改为 0,则会出现异常。奇怪的是,我无法从后面的代码中访问"changeThis"列定义。这是一个Windows应用商店应用程序。

在运行时修改列表视图项模板

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

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

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