0
我創建了一個LongListSelector
,它在運行時填充下載到手機中的數據。這些組都在那裏並且正確,GroupItemsPanel
看起來也是正確的。我的問題是,每當我從GroupItemsPanel
中選擇時,列表將滾動到底部,而不是滾動到我選擇的組標題。LongListSelector 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」),該列表也會顯示在底部。我不知道爲什麼會發生這種情況:/
非常感謝,如果你可以幫忙!