windows-phone-7 - 如何隐藏 LongListSelector 中的组标题?

标签 windows-phone-7 xaml windows-phone-8 longlistselector

如果列表中的项目数量较小(例如 WP 中的应用程序列表,如果应用程序少于 30 个),我想隐藏 LongListSelector 中的组标题。

 LongListSelector.ItemsSource = myList; 
 if (myList.Count < 10) 
 {
    //hide group header
 }

这可能吗?

更新

所以,我尝试:

LongListSelector.ItemsSource = myList; 
     if (myList.Count < 10) 
     {
        LongListSelector.GroupHeaderTemplate = null;
     }

它确实有效,但我仍然等待更多漂亮的建议。谢谢! :)

编辑

我的长列表选择器:

<phone:LongListSelector 
                          Name="UsersListGroup"
                          IsGroupingEnabled="True" 
                          LayoutMode="List"
                          HideEmptyGroups="False"      
                          ItemTemplate="{StaticResource usersItemTemplate}"
                          GroupHeaderTemplate="{StaticResource groupHeaderTemplate}"
                          JumpListStyle="{StaticResource LongListSelectorJumpListStyle}"                          
                          Margin="1,36,-1,10"
                          VirtualizingStackPanel.VirtualizationMode="Recycling"/>

模板:

<DataTemplate x:Key="usersItemTemplate">
    <Grid x:Name="FriendsPanel" Grid.Row="1" Margin="12,0,12,0">            
        <StackPanel Name="FriendPanel" Orientation="Horizontal" Margin="0,0,0,17" Tag="{Binding Id}" Tap="FriendPanel_Tap" >
            <Image Height="75" 
                   Width="75" 
                   HorizontalAlignment="Left" 
                   Margin="6,0,9,0" 
                   Name="Avatar" 
                   Stretch="Fill" 
                   VerticalAlignment="Top" 
                   Source="{Binding Avatar, StringFormat=http://myurl.com/\{0\}}"/>
            <TextBlock Text="offline" 
                       TextWrapping="Wrap"
                       Margin="-75,78,0,0" 
                       Style="{StaticResource PhoneTextSmallStyle}" >
                 <i:Interaction.Triggers>     
                         <ec:DataTrigger Binding="{Binding IsOnline}" Value="1">
                              <ec:ChangePropertyAction PropertyName="Text" Value="online"/>
                         </ec:DataTrigger>
                 </i:Interaction.Triggers>
            </TextBlock>
            <StackPanel >
                <TextBlock
                           Text="{Binding Name}" 
                           TextWrapping="Wrap" 
                           Style="{StaticResource PhoneTextExtraLargeStyle}">
                </TextBlock>
                <TextBlock Text="{Binding Aboutself}" 
                           TextWrapping="Wrap" 
                           Margin="12,-6,12,0" 
                           Style="{StaticResource PhoneTextSubtleStyle}"/>
            </StackPanel>
        </StackPanel>
    </Grid>
</DataTemplate>

<Style x:Key="LongListSelectorJumpListStyle" TargetType="phone:LongListSelector">
    <Setter Property="GridCellSize"  Value="113,113"/>
    <Setter Property="LayoutMode" Value="Grid" />
    <Setter Property="ItemTemplate">
        <Setter.Value>
            <DataTemplate>
                <Border Background="Purple" 
                        Width="113" Height="113" Margin="6" >
                    <TextBlock Text="{Binding Title}"
                               FontFamily="{StaticResource PhoneFontFamilySemiBold}"  
                               FontSize="48" Padding="6" 
                               Foreground="White"
                               VerticalAlignment="Center"/>
                </Border>
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>

铯:

    private static ObservableCollection<Group<T>> GetItemGroups<T>(IEnumerable<T> itemList, Func<T, string> getKeyFunc)
            {
                IEnumerable<Group<T>> groupList = from item in itemList
                                                  group item by getKeyFunc(item) into g
                                                  orderby g.Key
                                                  select new Group<T>(Convert.ToString(g.Key.ToLower()[0]), g);

                var groupObservable = new ObservableCollection<Group<T>>(groupList);
                return groupObservable;
            }

   private ObservableCollection<Group<GYUser>> GetUserGroups(ObservableCollection<GYUser> collectionFriends)
            {                                       
                return GetItemGroups(collectionFriends, c => Convert.ToString(c.Name.ToLower()[0]));
            }


Friends = GetUserGroups(new ObservableCollection<GYUser>(response.Result.Friends));
UsersListGroup.ItemsSource = Friends;

最佳答案

您是否使用 WP8 中内置的 LongListSelector?如果是这样,请尝试将 IsGroupingEnabled 设置为 false。

http://msdn.microsoft.com/en-us/library/windowsphone/develop/microsoft.phone.controls.longlistselector.isgroupingenabled%28v=vs.105%29.aspx

如果您使用控件中自带的 WP7 版本,请尝试在页面资源中定义两个数据模板,其中一个具有宽度和高度为 0 的网格,如果您的项目数<,则将 GroupHeaderTemplate 交换到该数据模板10.

关于windows-phone-7 - 如何隐藏 LongListSelector 中的组标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17971819/

相关文章:

sqlite.cs 找不到 sqlite3 和社区

c# - 适用于 Windows Phone 8 的 OCR API

windows-phone-7 - 如何在 wp7 中的列表框项目之间插入特定数量的空间?

c# - 代码隐藏中的翻转 View 动画

c# - 从 DataGrid 中删除空格

c# - 如何告诉元素及其子元素忽略全局样式

xaml - 更改 Xamarin.Forms 中的文本颜色

c# - Xaml TextBlock 设置圆角

mvvm - 在 Windows Phone 8 和 MVVM 中向应用程序栏动态添加按钮

c# - 无法从 WP7 中的独立存储读取文件