加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在添加/删除项目时动态调整ListView高度?

发布时间:2020-12-15 22:18:33 所属栏目:百科 来源:网络整理
导读:我有一个3级嵌套ListView绑定到相同的3级嵌套集合. MainItems在第3级添加. 未修改,所有级别都有滚动条.在添加的项目上,我编辑ListViewItem的包含网格以动态调整高度. 我成功删除了第3级滚动条.但是,我想删除第二级,我似乎无法做到. 当我尝试调整第一级ListVi
我有一个3级嵌套ListView绑定到相同的3级嵌套集合. MainItems在第3级添加.

未修改,所有级别都有滚动条.在添加的项目上,我编辑ListViewItem的包含网格以动态调整高度.

我成功删除了第3级滚动条.但是,我想删除第二级,我似乎无法做到.

当我尝试调整第一级ListViewItem的高度时,第一级上的滚动条刚刚消失,但高度根本没有调整.

我想要做的只是让ScrollBar在第一级并从那里滚动.

基本上,这样的事情:

Remove the 2nd level scrollbar

这是我目前的代码:

<Grid x:Name="ParentGrid">
<ListView x:Name="Level1ListView" 
ItemsSource="{Binding Path=Level1}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid x:Name="GridLevel1">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <ToolKit_Controls:LayoutTransformControl Grid.Column="0">
                    <ToolKit_Controls:LayoutTransformControl.Transform>
                        <RotateTransform x:Name="rotateTransform" Angle="270"/>
                    </ToolKit_Controls:LayoutTransformControl.Transform>
                    <TextBlock Text="{Binding Path=Level1NameString}" FontSize="32" HorizontalAlignment="Center" />
                </ToolKit_Controls:LayoutTransformControl>
                <ListView x:Name="Level2ListView"
                        ItemsSource="{Binding Path=Level2}"
                      Grid.Column="1"
                      >
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <Grid x:Name="GridLevel2">
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="Auto" />
                                    <RowDefinition Height="*" />
                                </Grid.RowDefinitions>
                                <Border BorderBrush="White" BorderThickness="1" Grid.Row="0"/>
                                <TextBlock Text='{Binding Path=Level2Name}' Foreground="Black" FontSize="18"
                                       Grid.Row="0"/>

                                <Grid x:Name="GridLevel3" Width="300" Height="100" Grid.Row="1">
                                    <ListView x:Name="ListView_Level3" IsSwipeEnabled="False"
                                    ManipulationMode="None"
                                          ItemsSource="{Binding Path=Level3DisplayCollection}"
                                                          Grid.Column="1">
                                        <ListView.ItemContainerTransitions>
                                            <TransitionCollection>
                                                <EntranceThemeTransition IsStaggeringEnabled="False" />
                                            </TransitionCollection>
                                        </ListView.ItemContainerTransitions>
                                    </ListView>
                                </Grid>
                            </Grid>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapGrid Orientation="Horizontal" MaximumRowsOrColumns="1" ></WrapGrid>
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
</ListView>

并且重要的代码改变了项目的高度:

var GridLevel1 = TypedAssociatedObject.GetAncestors().Where(a =>      a.Named("GridLevel1")).FirstOrDefault() as Grid;
//GridLevel1.Height = GridLevel1.ActualHeight + 50;

var GridLevel2 = TypedAssociatedObject.GetAncestors().Where(a => a.Named("GridLevel2")).FirstOrDefault() as Grid;
GridLevel2.Height = GridLevel2.ActualHeight + 50;

var GridLevel3 = TypedAssociatedObject.GetAncestors().Where(a => a.Named("GridLevel3")).FirstOrDefault() as Grid;
GridLevel3.Height = GridLevel3.ActualHeight + 50;

级别1被注释掉,因为当我添加它时,虽然删除了第二个滚动条,但ListViewItem高度不会改变,导致UI错误并且不显示所有内容.您还注意到第1级滚动条保持相同的大小:

enter image description here

我想要的是扩展Header 1的高度,以便所有内容仍然显示,右侧的1st Level Scrollbar是扩展/增长的.

谁能帮助指出我做错了什么?

谢谢!

编辑:这是一个Windows商店应用程序.

解决方法

在内部列表视图中将ItemsPanel设置为StackPanel.这样您就不需要调整每个项目的高度.
同样要隐藏滚动条,请在内部列表视图中使用ScrollViewer.VerticalScrollBarVisibility =“Hidden”.

你考虑过使用grouping吗?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读