ExpanderView не показывает все элементы - PullRequest
3 голосов
/ 29 марта 2012

Я использую ExpanderView WindowsPhone Toolkit, и при первой загрузке мой расширенный Expander всегда будет выглядеть как вторая картинка. Кажется, это всегда на одной высоте всех предметов вместе.

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

Либо this.UpdatedLayout (); (текущая страница), ни ExpanderView.UpdateLayout (); разрешил что угодно. Элементы, которые не отображаются, полностью загружены в этот список.

part 1

part 2

<ItemsControl ItemsSource="{Binding EpisodeList}" Margin="20,0,0,0" Grid.Row="1" Grid.ColumnSpan="2">
<ItemsControl.ItemTemplate>
    <DataTemplate>
        <StackPanel>
            <toolkit:ExpanderView ItemsSource="{Binding Value}" >
                <toolkit:ExpanderView.Header>
                    <TextBlock Margin="0,0,10,0">
            <Run Text="Season "/>
            <Run Text="{Binding Key}" />
                    </TextBlock>
                </toolkit:ExpanderView.Header>
                <toolkit:ExpanderView.ItemTemplate>
                    <DataTemplate>
                        <Border BorderBrush="White" BorderThickness="1" Margin="5">
                            <Grid MouseLeftButtonUp="Grid_MouseLeftButtonUp">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition />
                                </Grid.ColumnDefinitions>
                                <Image Height="40"  Source="{Binding ScreenCap}" Margin="5,0,0,0"/>
                                <TextBlock x:Name="t" Margin="10" Text="{Binding Title}" TextWrapping="Wrap" Grid.Column="1" />
                            </Grid>
                        </Border>
                    </DataTemplate>
                </toolkit:ExpanderView.ItemTemplate>

            </toolkit:ExpanderView>
        </StackPanel>
    </DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

EpisodeList является типом словаря (int, ObservableCollection (myClass)) и реализует INotifyPropertyChanged

Если у кого-то есть какой-то план, что здесь не так, я был бы очень признателен за вашу помощь, я просто не нашел ни одного сообщения об ошибке в этом списке в Google, ни аналогичного сообщения об ошибке.

(отлажено как на устройстве, так и на эмуляторе)

Ответы [ 2 ]

6 голосов
/ 17 апреля 2012

Мне удалось решить эту проблему, используя список в качестве контейнера элементов и привязав к нему элементы расширения:

                    <Controls:ExpanderView Expanded="ExpanderView_Expanded"
                        Header="{Binding}"                               
                        HeaderTemplate="{StaticResource HeaderTemplate}"                                                                             
                        NonExpandableHeader="{Binding}" 
                        ExpanderTemplate="{StaticResource ExpanderTemplate}"
                        NonExpandableHeaderTemplate="{StaticResource NonExpandableHeaderTemplate}"
                        Expander="{Binding}"
                        >
                        <ListBox ScrollViewer.VerticalScrollBarVisibility="Disabled" ItemTemplate="{StaticResource ItemTemplate}" ItemsSource="{Binding Items}" />
                    </Controls:ExpanderView>
0 голосов
/ 01 апреля 2012

У меня была похожая проблема с ExpanderView.Я думаю, что это может быть ошибкой, связанной с ограничением в 2048 пикселей.В основном, когда я добавлял много элементов в расширенный ExpanderView, все было нормально, пока я не свернул вид и не расширил его снова.После расширения ExpanderView любые элементы после 2048 пикселей не показывались, если только я не коснулся их или не прокрутил их, и даже тогда они отображались только в течение всего времени, пока они находились в движении (анимация касания элемента работала или список былна ходу).

Я заметил, что, если я добавляю элемент в ExpanderView или удаляю его из него во время его расширения, сбой исчезает, пока в следующий раз я не свернул и не развернул элемент, поэтому я сделалбыстрая работа по добавлению и удалению фиктивного элемента в представление, когда бы оно ни было расширено, с помощью событий Expanded- и LayoutUpdated- ExpanderView.По сути, это то, что я сделал:

  • Установить состояние, чтобы указать, что выполняется расширение, и сохранить развернутое представление для дальнейшего использования.(в расширенном обработчике событий)
  • Подождите, пока обновятся все макеты Expanderviews (используйте обработчик событий LayoutUpdated, чтобы отслеживать это)
  • Добавьте фиктивный элемент в ExpanderView, который был расширен (в LayoutUpdated)обработчик события)
  • Подождите, пока обновятся все макеты Expanderview
  • Удалите фиктивный элемент (в обработчике событий LayoutUpdated)

Возможно, уродливое решение, но лучше всего я могпридумать.Надеюсь, что это поможет вам в вашей проблеме.

Редактировать: Не помогает на этой остановке линии Expander.Просто не смог заставить его работать ..

...