Почему мой ItemsControl усекается, когда он внутри ExpandView - PullRequest
0 голосов
/ 22 октября 2011

У меня есть проект WP7, который давал мне обходной путь в течение слишком многих дней. Любая помощь в решении этого вопроса была бы очень признательна.

По сути, у меня есть ScrollViewer. Внутри у меня есть ItemsControl. ItemTemplate для ItemsControl содержит Expander (адаптированный из Silverlight 3 Toolkit). Expander ContentTemplate имеет ItemsControl.

По сути, происходит то, что, когда я раскрываю один из элементов Expander, а ItemsControl содержит большее количество элементов (> 25), «рендеринг» списка выглядит усеченным. Там должно быть большое пустое место, куда должны идти предметы, поэтому для них, похоже, есть место, зарезервированное, но, как я мог бы попытаться, они просто усекаются.

Я пробовал использовать три различных типа элементов управления Expander, включая ExpanderView. Те же результаты, что бы я ни пытался.

Вот скриншот: http://www.IntuitiveWebDesigns.com/Photos/truncation.png

Вот фрагмент из XAML, который я использую.

     <ScrollViewer Grid.Row="1">
        <ItemsControl ItemsSource="{Binding Publishers}" Margin="0,10,0,0" Height="Auto">
           <ItemsControl.ItemTemplate>
              <DataTemplate>
                 <Border Background="Black" Opacity="60" OpacityMask="#8A000000" CornerRadius="10">
                    <controlToolkit:Expander ExpandDirection="Down" Header="{Binding}" Content="{Binding}" Height="Auto">
                       <controlToolkit:Expander.HeaderTemplate>
                          <DataTemplate>
                             <TextBlock Text="{Binding PublisherName}"  
                                           Foreground="{StaticResource PhoneAccentBrush}"
                                           FontSize="{StaticResource PhoneFontSizeExtraLarge}" 
                                           FontFamily="{StaticResource PhoneFontFamilySemiLight}"/>
                          </DataTemplate>
                       </controlToolkit:Expander.HeaderTemplate>
                       <controlToolkit:Expander.ContentTemplate>
                          <DataTemplate>
                             <ItemsControl ItemsSource="{Binding Issues}">
                                <ItemsControl.ItemTemplate>
                                   <DataTemplate>
                                      <StackPanel>
                                         <TextBlock Text="{Binding TitleAndIssue}"
                                               Foreground="{StaticResource PhoneForegroundBrush}"
                                               FontSize="{StaticResource PhoneFontSizeNormal}" 
                                               FontFamily="{StaticResource PhoneFontFamilySemiLight}"/>
                                         <TextBlock Text="{Binding StrAmount}"
                                               TextWrapping="Wrap"
                                               Margin="0,0,0,0"
                                               Foreground="{StaticResource PhoneAccentBrush}"
                                               FontSize="{StaticResource PhoneFontSizeNormal}" 
                                               FontFamily="{StaticResource PhoneFontFamilyNormal}"/>
                                      </StackPanel>
                                   </DataTemplate>
                                </ItemsControl.ItemTemplate>
                             </ItemsControl>
                          </DataTemplate>
                       </controlToolkit:Expander.ContentTemplate>
                    </controlToolkit:Expander>
                 </Border>
              </DataTemplate>
           </ItemsControl.ItemTemplate>
        </ItemsControl>
     </ScrollViewer>

1 Ответ

0 голосов
/ 24 октября 2011

Вы попали в ограничение платформы.В частности, что UIElement не может быть больше, чем 2048px в любом измерении.Это ограничение существует по соображениям памяти и производительности.

Вместо того, чтобы создавать свой собственный элемент управления, попробуйте использовать один из стандартных или один из телефонной версии набора инструментов *1004*.

Если вы действительно хотите использовать элемент управления в стиле расширителя, зарезервируйте меньший фиксированный размер для прокручиваемой области и виртуализируйте отображаемый список.

...