我创建了一个LongListSelector
在运行时填充下载到手机的数据。这些组都在那里并且正确,GroupItemsPanel
看起来也正确。我的问题是,每当我从GroupItemsPanel
列表中选择时,都会滚动到底部,而不是滚动到我选择的组标题。
这是我的 XAML 代码
<toolkit:LongListSelector ItemsSource="{Binding Institutions}"
GroupHeaderTemplate="{StaticResource GroupHeader}"
GroupItemTemplate="{StaticResource GroupItem}"
ItemTemplate="{StaticResource ItemTmpl}"
Grid.Row="1">
<toolkit:LongListSelector.GroupItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</toolkit:LongListSelector.GroupItemsPanel>
</toolkit:LongListSelector>
<DataTemplate x:Key="GroupHeader">
<Border Background="{StaticResource OrangeHighlight}"
Margin="{StaticResource PhoneTouchTargetOverhang}"
Padding="{StaticResource PhoneTouchTargetOverhang}">
<TextBlock Text="{Binding Key}"/>
</Border>
</DataTemplate>
<DataTemplate x:Key="GroupItem">
<Border Background="{StaticResource OrangeHighlight}"
Margin="{StaticResource PhoneTouchTargetOverhang}"
Padding="{StaticResource PhoneTouchTargetOverhang}">
<TextBlock Text="{Binding Key}"
Style="{StaticResource PhoneTextLargeStyle}"/>
</Border>
</DataTemplate>
<DataTemplate x:Key="ItemTmpl">
<Grid>
<CheckBox Content="{Binding Name}"
Style="{StaticResource CheckBoxStyle}"/>
</Grid>
</DataTemplate>
这就是我创建ItemsSource
. 数据按Name
字段的第一个字符分组。
public IEnumerable<GroupingLayer<string, Field>> Institutions
{
get
{
if (m_oInstitutions == null)
m_oInstitutions = new List<Field>();
//
var oGrouping = from oField in m_oInstitutions
group oField by oField.Name[0].ToString().ToUpper()
into oGroup select new GroupingLayer<string, Field>(oGroup);
return oGrouping;
}
}
public class Field
{
public string ID { get; set; }
public string Name { get; set; }
}
public class GroupingLayer<TKey, TElement> : IGrouping<TKey, TElement>
{
private readonly IGrouping<TKey, TElement> m_oGrouping;
public GroupingLayer(IGrouping<TKey, TElement> oUnit)
{
m_oGrouping = oUnit;
}
public TKey Key { get { return m_oGrouping.Key; } }
public IEnumerator<TElement> GetEnumerator()
{
return m_oGrouping.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return m_oGrouping.GetEnumerator();
}
}
无论我从GroupItemsPanel
列表中选择哪个项目,都会滚动到底部。即使我选择了第一项(通常是“A”),列表也会移到底部。我不知道为什么会这样:/
非常感谢您能提供帮助!