WPF: вертикальный расширитель, содержащий ListView, не расширяется должным образом - PullRequest
2 голосов
/ 05 января 2011

У меня есть расширитель, содержащий представление списка. Расширитель изначально отключен и включен через некоторое время после запуска приложения.

Все прекрасно работает, если перед InitializeComponent () я заполняю ItemSource ListView (некоторую наблюдаемую коллекцию, созданную, конечно, до InitializeComponent) хотя бы одним элементом. Расширитель расширяется правильно, элементы отображаются так, как должны. Единственная проблема заключается в том, что новые элементы, которые требуют больше места для визуализации, выглядят обрезанными - я предполагаю, что это означает, что ListView не обновляется должным образом?

Однако , если я добавлю элементы в коллекцию в любое время после InitializeComponent (), расширитель только немного расширится (всего на несколько пикселей). Когда я заставляю ширину ListView иметь какое-то большое значение, расширитель расширяется, но элементы, вставленные в список, отображаются только с цветом фона, без содержимого ...

Я предполагаю, что это как-то связано с инициализацией ListView, обновлением или чем-то еще. Код следует:

XAML:

<DockPanel Name="mainPanel">
    <Expander DockPanel.Dock="Right" ExpandDirection="Right" IsExpanded="False" IsEnabled="{Binding ExpanderEnabled}">
        <Expander.Style>
            <Style TargetType="Expander">
                <Setter Property="Background" Value="#FFFF3333" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ExpanderEnabled}" Value="True">
                        <Setter Property="Background" Value="LightGreen" />
                    </DataTrigger>
                </Style.Triggers>
             </Style>
         </Expander.Style>
         <Expander.Header>
             <Grid Width="30" VerticalAlignment="Top" HorizontalAlignment="Left">
                 <Grid Width="300" Height="300" VerticalAlignment="Top" HorizontalAlignment="Left">
                      <TextBlock Text="Expander Name" FontSize="12" FontWeight="Bold" Margin="22,170,0,0" VerticalAlignment="Center" HorizontalAlignment="Left" RenderTransformOrigin="0,1">
            <TextBlock.RenderTransform>
                <TransformGroup>
                    <ScaleTransform/>
                    <SkewTransform/>
                    <RotateTransform Angle="-90"/>
                    <TranslateTransform/>
                </TransformGroup>
            </TextBlock.RenderTransform>
                            </TextBlock>
                        </Grid>
                    </Grid>
         </Expander.Header>
         <ListView ItemsSource="{Binding Items}" BorderBrush="LightGreen" BorderThickness="3">
             <ListView.Style>
                 <Style TargetType="ListView">
                     <Style.Resources>
                         <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Black"/>
                     </Style.Resources>
                 </Style>
              </ListView.Style>
              <ListView.View>
                  <GridView>
                      <GridView.ColumnHeaderContainerStyle>
                          <Style TargetType="{x:Type GridViewColumnHeader}">
                              <Setter Property="Visibility" Value="Collapsed"/>
                          </Style>
                      </GridView.ColumnHeaderContainerStyle>
                      <GridViewColumn DisplayMemberBinding="{Binding Path=A, Converter={StaticResource aConverter}}" Width="Auto" />
                      <GridViewColumn DisplayMemberBinding="{Binding Path=B, Converter={StaticResource bConverter}}" Width="Auto" />
                      <GridViewColumn DisplayMemberBinding="{Binding Path=C, Converter={StaticResource cConverter}}" Width="Auto" />
                      <GridViewColumn DisplayMemberBinding="{Binding Path=D, StringFormat='\{0\} ds'}" Width="Auto" />
                  </GridView>
              </ListView.View>
           </ListView>
      </Expander>
      ...
...