首页 > 解决方案 > WPF 嵌套扩展器未正确调整父 ListBox 滚动条

问题描述

我正在为工作流程构建一个自动清单。该应用程序比较两个来源之间的数据并生成一系列通过失败结果,其中包括在测试中评估的数据。有些测试有子测试,也需要审查。ViewModel 的输入是测试结果列表。我选择 Expanders 是因为我可以隐藏数据,除非需要查看。下面是列表框的示例 DataTemplates,其中我有一个自定义数据模板选择器可以在模型之间进行选择

            <Expander >
                <Expander.Header>
                    <DockPanel HorizontalAlignment="Center" VerticalAlignment="Center">
                        <Image DockPanel.Dock="Left" Height="30" Width="30" Style="{DynamicResource ImageStyle}"/>
                        <TextBlock DockPanel.Dock="Left" Text="{Binding TestName}" VerticalAlignment="Center" Margin="10,0" Height="30" FontSize="12"/>
                        <Button DockPanel.Dock="Right" Content="Override" IsEnabled="False" Height="30" Width="150"/>
                    </DockPanel>
                </Expander.Header>
                <Expander.Content>
                    <Grid Margin="25,5" >
                        <DataGrid ItemsSource="{Binding TestData}" Height="50" FontSize="12" AutoGenerateColumns="False">
                            <DataGrid.Columns>
                                <DataGridTextColumn Header="Eclispe Data" Binding="{Binding EclipseData}"/>
                                <DataGridTextColumn Header="Mosaiq Data" Binding="{Binding MosaiqData}"/>
                            </DataGrid.Columns>
                        </DataGrid>
                    </Grid>
                </Expander.Content>
            </Expander>
        </DataTemplate>
        <DataTemplate x:Key="NestedResultTemplate"  DataType="MQTransferValidation.Model.Result">
            <Expander >
                <Expander.Header>
                    <DockPanel HorizontalAlignment="Center" VerticalAlignment="Center">
                        <Image DockPanel.Dock="Left" Height="30" Width="30" Style="{DynamicResource ImageStyle}"/>
                        <TextBlock DockPanel.Dock="Left" Text="{Binding TestName}" VerticalAlignment="Center" Margin="10,0" Height="30" FontSize="12"/>
                        <Button DockPanel.Dock="Right" Content="Override" IsEnabled="False" Height="30" Width="150"/>
                    </DockPanel>
                </Expander.Header>
                <ListBox Margin="25,5" ItemsSource="{Binding SubTestResults}" ItemTemplateSelector="{StaticResource dataTemplateSelector}">
                    
                </ListBox>
                
            </Expander>
        </DataTemplate>

我遇到的问题是我的嵌套扩展器没有正确调整包含它们的 ListView 上的滚动条。我可以扩展一个或两个级别,但是所有的东西都属于我们的 listView,我不能再向下滚动了。

我是否缺少将 Expander 范围中的更改传递到渲染链的命令或选项?

标签: c#wpfvisual-studiolistviewexpander

解决方案


ScrollViewer.VerticalScrollBarVisibility="Visible" Height="350"为你的ListBox设置了,那么两个滚动条就可以正常工作了。

以下是更新后的代码(仅供测试)和结果图片:

  <Grid>
    <ListView Name="myListView">
        <ListView.ItemTemplate>
            <DataTemplate >
                <Expander >
                    <Expander.Header>
                        <DockPanel HorizontalAlignment="Center" VerticalAlignment="Center">
                            <Image DockPanel.Dock="Left" Height="30" Width="30"/>
                            <TextBlock DockPanel.Dock="Left" Text="{Binding TestName}" VerticalAlignment="Center" Margin="10,0" Height="30" FontSize="12"/>
                            <Button DockPanel.Dock="Right" Content="Override" IsEnabled="False" Height="30" Width="150"/>
                        </DockPanel>
                    </Expander.Header>
                    <ListBox Margin="25,5" ScrollViewer.VerticalScrollBarVisibility="Visible" Height="350">
                        <ListBoxItem Content="Start"></ListBoxItem>
                        <ListBoxItem Content="{Binding EclipseData}"></ListBoxItem>
                        <ListBoxItem Content="{Binding EclipseData}"></ListBoxItem>
                        <ListBoxItem Content="{Binding EclipseData}"></ListBoxItem>
                        <ListBoxItem Content="{Binding EclipseData}"></ListBoxItem>
                        <ListBoxItem Content="{Binding EclipseData}"></ListBoxItem>
                        <ListBoxItem Content="{Binding EclipseData}"></ListBoxItem>
                        <ListBoxItem Content="{Binding EclipseData}"></ListBoxItem>
                        <ListBoxItem Content="{Binding EclipseData}"></ListBoxItem>
                        <ListBoxItem Content="{Binding EclipseData}"></ListBoxItem>
                        <ListBoxItem Content="{Binding MosaiqData}"></ListBoxItem>
                        <ListBoxItem Content="{Binding MosaiqData}"></ListBoxItem>
                        <ListBoxItem Content="{Binding MosaiqData}"></ListBoxItem>
                        <ListBoxItem Content="{Binding MosaiqData}"></ListBoxItem>
                        <ListBoxItem Content="{Binding MosaiqData}"></ListBoxItem>
                        <ListBoxItem Content="{Binding MosaiqData}"></ListBoxItem>
                        <ListBoxItem Content="{Binding MosaiqData}"></ListBoxItem>
                        <ListBoxItem Content="{Binding MosaiqData}"></ListBoxItem>
                        <ListBoxItem Content="{Binding MosaiqData}"></ListBoxItem>
                        <ListBoxItem Content="{Binding MosaiqData}"></ListBoxItem>
                        <ListBoxItem Content="{Binding MosaiqData}"></ListBoxItem>
                        <ListBoxItem Content="End"></ListBoxItem>
                    </ListBox>
                </Expander>
            </DataTemplate>
        </ListView.ItemTemplate>
       
    </ListView>
   
</Grid>

在此处输入图像描述


推荐阅读