问题描述
我正在为工作流程建立一个自动化清单。该应用程序比较两个来源之间的数据,并生成一系列通过失败结果,其中包括测试中评估的数据。一些测试具有子测试,这些子测试也需要进行审查。 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>