WPF嵌套扩展器无法正确调整父级ListBox滚动条

问题描述

我正在为工作流程建立一个自动化清单。该应用程序比较两个来源之间的数据,并生成一系列通过失败结果,其中包括测试中评估的数据。一些测试具有子测试,这些子测试也需要进行审查。 viewmodel的输入是测试结果的列表。我选择扩展器是因为我可以隐藏数据,除非需要对其进行检查。以下是列表框的示例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的范围,并且无法向下滚动。

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

解决方法

我为您的列表框设置了ScrollViewer.VerticalScrollBarVisibility="Visible" Height="350",然后两个滚动条无法工作。

下面是更新的代码(仅用于测试)和结果图片:

  <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>

enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...