c# – 在添加/删除项目时动态调整ListView高度?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 在添加/删除项目时动态调整ListView高度?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3118字,纯文字阅读大概需要5分钟。
内容图文
![c# – 在添加/删除项目时动态调整ListView高度?](/upload/InfoBanner/zyjiaocheng/772/c170fe72ef3d4644b8d92c1733206b38.jpg)
我有一个3级嵌套ListView绑定到相同的3级嵌套集合. MainItems在第3级添加.
未修改,所有级别都有滚动条.在添加的项目上,我编辑ListViewItem的包含网格以动态调整高度.
我成功删除了第3级滚动条.但是,我想删除第二级,我似乎无法做到.
当我尝试调整第一级ListViewItem的高度时,第一级上的滚动条刚刚消失,但高度根本没有调整.
我想要做的只是让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级滚动条保持相同的大小:
我想要的是扩展Header 1的高度,以便所有内容仍然显示,右侧的1st Level Scrollbar是扩展/增长的.
谁能帮助指出我做错了什么?
谢谢!
编辑:这是一个Windows商店应用程序.
解决方法:
在内部列表视图中将ItemsPanel设置为StackPanel.这样您就不需要调整每个项目的高度.
同样要隐藏滚动条,请在内部列表视图中使用ScrollViewer.VerticalScrollBarVisibility =“Hidden”.
你考虑过使用grouping吗?
内容总结
以上是互联网集市为您收集整理的c# – 在添加/删除项目时动态调整ListView高度?全部内容,希望文章能够帮你解决c# – 在添加/删除项目时动态调整ListView高度?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。