L'accent sur le premier élément de la première LongListSelector à l'intérieur d'un Pivot

StackOverflow https://stackoverflow.com//questions/22043701

Question

J'ai un rapport à remplir, qui est composé d'un List de sections, dont chacune a un List de questions.Ma version actuelle utilise un Pivot contrôle dont ItemsSource est définie à l' List des articles et DataTemplate est un LongListSelector dont ItemsSource est définie à l' List de questions.

Lorsque l'utilisateur tente de soumettre le rapport, je boucle sur toutes les questions de vérification de leur validité.Si revenir invalide, un indicateur est défini et un message d'erreur est affiché à côté de la question.

Je voudrais être en mesure de se concentrer sur la première question, qui a le drapeau, mais ne peut pas comprendre comment faire pour obtenir une référence à la nécessaire LongListSelector de sorte que je peux appeler cela de l' ScrollTo la méthode.

Code:

Vue

<phone:Pivot toolkit:TurnstileFeatherEffect.FeatheringIndex="0"
                 Name="QuestionPivot"
                 ItemsSource="{Binding Sections, Mode=TwoWay}">
        <phone:Pivot.Title>
            <TextBlock>
                <Run Text="{Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}"/>
                <Run Text=" "/>
                <Run Text="{Binding Path=LocalizedResources.DailyReport, Source={StaticResource LocalizedStrings}}"/>
                <Run Text=" - "/>
                <Run Text="{Binding ProjectName}"/>
            </TextBlock>
        </phone:Pivot.Title>            
        <phone:Pivot.HeaderTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding SectionName}"/>
            </DataTemplate>
        </phone:Pivot.HeaderTemplate>
        <phone:Pivot.ItemTemplate>
            <DataTemplate>
                <phone:LongListSelector ItemsSource="{Binding Questions, Mode=TwoWay}">
                    <phone:LongListSelector.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Margin="0 0 0 20">
                                ...  
                            </StackPanel>
                        </DataTemplate>
                    </phone:LongListSelector.ItemTemplate>
                </phone:LongListSelector>
            </DataTemplate>
        </phone:Pivot.ItemTemplate>

    </phone:Pivot>

Code Derrière (y compris mon échec de la tentative de jeter le SelectedItem à un LongListSelector...)

    private void FocusOnFirstInvalid(object sender, EventArgs e)
    {
        int selectedItem = 1;
        foreach (ReportDraftSection s in QuestionPivot.Items)
        {
            foreach(ReportQuestion q in s.Questions)
            {
                if(q.IsNotValid)
                {
                    QuestionPivot.SelectedIndex = selectedItem;
                    var l = (LongListSelector)QuestionPivot.SelectedItem;
                    l.ScrollTo(q);
                }
            }
            selectedItem += 1;
        }
    }

Toute aide serait grandement appréciée.

Était-ce utile?

La solution

Depuis la Pivot ItemsSource une Liste de Section, QuestionPivot.SelectedItem contient un Section objet au lieu de le LongListSelector.Vous pouvez essayer d'utiliser ItemContainerGenerator pour obtenir PivotItem de SelectedItem, puis obtenir le LongListSelector de PivotItem de l' Content (pas encore testé) :

.......
QuestionPivot.SelectedIndex = selectedItem;
var pivotItem = (PivotItem)QuestionPivot
                .ItemContainerGenerator
                .ContainerFromItem(QuestionPivot.SelectedItem);
var l = (LongListSelector)pivotItem.Content;
l.ScrollTo(q);
.......
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top