我已经了解到,如果将网格行的高度ScrollViewer设置为Auto,则垂直滚动条将不会生效,因为它的实际大小ScrollViewer可能大于视线中的高度.因此,为了使滚动条工作,我应该将高度设置为固定数字或星形高度
但是,我现在有了这个要求,我有两个不同的视图驻留在两个网格行中,并且我有一个切换按钮可以在这两个视图之间切换:当显示一个视图时,另一个视图隐藏/消失.所以我定义了两行,两个高度都设置为Auto.我绑定的每一行中的布尔属性视图的可视性从我的视图模型(一个是从转换True到Visible从和其他True来Collapsed.我们的想法是,当一个视图的能见度Collapsed,网格行的高度/视图将被改变自动为0.
视图显示/隐藏工作正常.但是,在一个视图中我有一个ScrollViewer,正如我所提到的,当行高设置为时,它不起作用Auto.任何人都能告诉我如何在仍然ScrollViewer自动工作的同时满足这样的要求吗?我想我可以在代码隐藏中设置高度.但由于我使用的是MVVM,因此需要额外的通信/通知.有没有更简单的方法呢?
因此,正如问题所暗示的,我无法让滚动条显示在我的 listView 中。用网格替换 StackPanel 是可行的,但问题是选项卡控件中的两个列表视图然后堆叠在彼此和我的标签之上。建议?
<DockPanel VerticalAlignment="Bottom" HorizontalAlignment="Stretch" Height="422" Width="780" Margin="200,0,0,0" Background="#FF89BBF7">
<TabControl VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="20,0,0,0" Background="#FF89BBF7">
<TabItem Header="Active Calls">
<TabItem.Background>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFF3F3F3" Offset="0"/>
<GradientStop Color="#FFEBEBEB" Offset="0.5"/>
<GradientStop Color="#FFDDDDDD" Offset="0.5"/>
<GradientStop Color="#FF89BBF7" Offset="1"/>
</LinearGradientBrush>
</TabItem.Background>
<Grid Background="#FF89BBF7" HorizontalAlignment="Stretch">
<StackPanel>
<ListView Name="lvwCalls" HorizontalAlignment="Stretch" VerticalAlignment="Top" Height="Auto" Margin="10,10,10,40" >
<ListView.View>
<GridView>
<GridViewColumn Header="Priority" Width="50" DisplayMemberBinding="{Binding priority}" />
<GridViewColumn Header="Call Status" Width="60" DisplayMemberBinding="{Binding callStatus}" />
<GridViewColumn Header="Call Type" Width="60" DisplayMemberBinding="{Binding callType}" />
<GridViewColumn Header="Dispatched Persons" Width="120" DisplayMemberBinding="{Binding dispatchedPersons}" />
<GridViewColumn Header="Region" …Run Code Online (Sandbox Code Playgroud)