LongListSelector
을 작성하여 런타임에 전화로 다운로드되는 데이터로 채 웁니다. 그룹은 모두 거기 있고 정확하다, GroupItemsPanel
는 너무 정확하게 보인다. 내 문제는 GroupItemsPanel
에서 선택할 때마다 내가 선택한 그룹 헤더 대신 목록이 맨 아래로 스크롤된다는 것입니다.LongListSelector GroupItemsPanel 선택이 작동하지 않습니다.
는 여기가 ItemsSource
을 만드는거야 방법이 내 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>
입니다. 데이터는 Name
필드의 첫 번째 문자로 그룹화됩니다. 에 관계없이 나는 목록을 아래로 스크롤하는 GroupItemsPanel
에서 선택하는 항목의
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();
}
}
. 첫 번째 항목 (일반적으로 "A")을 선택하더라도 목록은 맨 아래로 이동합니다. 왜 이런 일이 벌어지고 있는지 잘 모르겠습니다./
도와 주시면 감사드립니다.