关注数据透视表中第一个LongListSelector的第一项

时间:2014-02-26 14:02:14

标签: c# windows-phone-8 longlistselector

我有一份报告要填写,由List个部分组成,每个部分都有List个问题。我当前的实现使用Pivot控件,其ItemsSource设置为List个部分,DataTemplateLongListSelector ItemsSource设置为List LongListSelector个问题。

当用户尝试提交报告时,我会遍历所有问题以检查其有效性。如果任何回复无效,则设置一个标志,并在该问题旁边显示错误消息。

我希望能够专注于设置了该标志的第一个问题,但无法弄清楚如何获得对所需ScrollTo的引用,以便我可以将其称为<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> 方法。

代码:

查看

    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;
        }
    }

代码隐藏(包括我尝试将SelectedItem强制转换为LongListSelector ...)

{{1}}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

由于Pivot的ItemsSourceSection的列表,QuestionPivot.SelectedItem包含Section对象而不是LongListSelector。您可以尝试使用ItemContainerGeneratorSelectedItem获取PivotItem,然后从PivotItem的Content获取LongListSelector(尚未测试):

.......
QuestionPivot.SelectedIndex = selectedItem;
var pivotItem = (PivotItem)QuestionPivot
                .ItemContainerGenerator
                .ContainerFromItem(QuestionPivot.SelectedItem);
var l = (LongListSelector)pivotItem.Content;
l.ScrollTo(q);
.......