在运行时修改ListView ItemTemplate

时间:2014-12-04 23:51:50

标签: c# xaml listview grid itemtemplate

我有一个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列(140px宽)列消失,因此其他列保持正常可见。我使用VisualStateManager来管理方向更改,但如果我尝试更改&#34; changeThis&#34; ColumnDefinition为0.奇怪的是我无法访问&#34; changeThis&#34;从后面的代码中的ColumnDefinition。它是一个Windows应用商店应用程序。

1 个答案:

答案 0 :(得分:0)

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

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

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