c# - 如果其子项包含扩展器,则 ScrollViewer 不起作用
问题描述
我提出了一个新问题,因为最后一个问题的表述不正确(或者更准确地说,我现在才理解真正的问题)。
我有一个 ListView 和一个 ItemsControl,其中有 Expanders。在这两种情况下,ScrollViewer 都无法正常工作。对于 ListView 它永远不会工作。对于 ItemsControl,它有点随机。
如您所见,在我的模板中,我有一些扩展器,这就是导致这些问题的原因。我尝试用一个按钮替换模板,然后 ScrollViewer 对 ItemsControl 和 ScrollViewer 都工作正常。
我试图在互联网上找到这个问题的解决方案,但我找到的唯一一个答案是那个,它写在哪里,I fixed it by calling updateLayout method of scrollviewer control before check scrollviewer.extent property.
但我不明白它的含义。
这是我的 XAML 的简短示例:
<Grid Grid.Column="1" Visibility="{Binding MainTemplateVisible, Converter={StaticResource BooleanToVisibilityConverter}}">
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition Height="*"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="50"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="50"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="50"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="1" Content="{x:Static p:Resources.Ready}" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="20"/>
<Label Grid.Column="3" Content="{x:Static p:Resources.InProcess}" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="20"/>
<ScrollViewer x:Name="Scroll1" Grid.Row="1" Grid.Column="1" VerticalScrollBarVisibility="Visible" IsEnabled="True">
<ItemsControl ItemsSource="{Binding SelectedGroup.ListUnicAssAwaiting}" ItemTemplate="{StaticResource TemplateListView}" SizeChanged="ItemsControl_SizeChanged"/>
</ScrollViewer>
<ListView Height="400" x:Name="listView2" Grid.Row="1" Grid.Column="3" ItemTemplate="{StaticResource TemplateListView}" ItemsSource="{Binding SelectedGroup.ListUnicAssOnGoing}" >
</ListView>
</Grid>
然后模板:
<DataTemplate x:Key="TemplateListView">
<Expander FontWeight="Bold" IsExpanded="False">
<Expander.Header>
<DockPanel Height="50" Width="{Binding
RelativeSource={RelativeSource
Mode=FindAncestor,
AncestorType={x:Type Expander}},
Path=ActualWidth}">
<Button Click="View3D_Click" DockPanel.Dock="Right" Margin="0,0,28,0" Height="20" Width="20" Tag="{Binding ID}">
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IFC}" Value="">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
<Image Source="..\img\image_3D.png" />
</Button>
<TextBlock Text="{Binding Name}">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Erreur}" Value="1">
<Setter Property="Background" Value="#80FF0000" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=Erreur}" Value="2">
<Setter Property="Background" Value="#80FF0000" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=Erreur}" Value="3">
<Setter Property="Background" Value="#40FFC050" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DockPanel>
</Expander.Header>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<DataGrid BorderBrush="{StaticResource WindowBorderColor}" BorderThickness="3" ItemsSource="{Binding Path=ListUniqueAssemblies}" IsReadOnly="True" AutoGenerateColumns="False" HorizontalAlignment="Center" FontWeight="Normal">
<DataGrid.Columns>
<DataGridTextColumn Header="{x:Static p:Resources.Name}" Binding="{Binding Path=Name, UpdateSourceTrigger=PropertyChanged}" Width="100">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="Margin" Value="2,1,2,1"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Expander>
</DataTemplate>
如果我这样替换模板,一切正常
<DataTemplate x:Key="TemplateListView">
<Button Click="View3D_Click" DockPanel.Dock="Right" Margin="0,0,28,0" Height="20" Width="20" Tag="{Binding ID}">
<Image Source="..\img\image_3D.png" />
</Button>
</DataTemplate>
解决方案
推荐阅读
- javascript - 下拉菜单在 Flask python 中不起作用
- javascript - 删除了自动重新添加的 firebase 阵列
- multidimensional-array - Java中的二维数组
- .htaccess - .htaccess 重写动态 url 问题
- php - 如何通过申请优惠券在 Laravel 5.8 项目中获得折扣
- .htaccess - 简单的 301 重定向后 HTTPS 神秘丢失
- c# - 用于整个块长度的 TextBlock 的 WPF C# MouseBinding
- c# - 确定选项卡在 TabControl 类 (System.Windows.Forms) 中是否可见
- django - 如何更新表单集
- python - Python - 实现合并排序算法时出现类型错误