【发布时间】:2015-08-16 16:37:07
【问题描述】:
我有一个 3 级嵌套 ListView 绑定到同一个 3 级嵌套集合。 MainItems 在第 3 级添加。
未修改,所有级别都有滚动条。在添加项目时,我编辑 ListViewItem 的 Containing Grid 以动态调整高度。
我已成功移除第三级滚动条。但是,我也想删除 2nd Level,我似乎做不到。
当我尝试调整 1st Level ListViewItem 的高度时,1st Level 上的滚动条消失了,但根本没有调整高度。
我想要做的是仅在 1st 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;
Level 1 被注释掉,因为当我添加它时,虽然 第二个滚动条被删除 ListViewItem 高度没有改变,导致 UI 错误并且没有显示所有内容。您还注意到第一级滚动条的大小保持不变:
我想要扩展 Header 1 的高度,以便一切仍然显示,右侧的 1st Level Scrollbar 是一种扩展/增长。
谁能帮忙指出我做错了什么?
谢谢!
编辑:这是一个 Windows 商店应用程序。
【问题讨论】:
-
在我看来,使用
TreeView会更好。 -
对不起,我忘了说这是一个 Windows 商店应用程序。不幸的是,我认为树视图不可用
标签: c# wpf listview windows-store-apps