2017-05-29 9 views
0

リストボックスのitemssourceのソートとグループ化を同時に行いたいと思います。 私は今のためにこれをしようとしています。このGrouping and Sortingxamlのリストボックスに対して同時にグループ化してソートする方法は?

ようなものが必要:

<CollectionViewSource x:Key="cvs" x:Name="cvs" IsSourceGrouped="True"> </CollectionViewSource>

<ListBox Background="#282828" x:Name="sendersearchresults" ItemsSource="{Binding Source={StaticResource cvs}}"> 
          <ListBox.GroupStyle> 
           <GroupStyle> 
            <GroupStyle.HeaderTemplate> 
             <DataTemplate> 
              <StackPanel Margin="20,0,0,0"> 
               <TextBlock Foreground="#FFCF06" FontSize="40" FontWeight="Normal" Text="{Binding FirstName,Converter={StaticResource PrefixValueConverter},ConverterParameter=1}" /> 
               <Button Background="Transparent" Margin="-100,0,0,0" BorderThickness="0" BorderBrush="Transparent" Width="400"> 
                <Grid> 
                 <Grid.RowDefinitions> 
                  <RowDefinition/> 
                  <RowDefinition/> 
                 </Grid.RowDefinitions> 
                 <Image Source="{Binding Icon}" Grid.Row="0" Width="50" Height="50" HorizontalAlignment="Left" Margin="-12,4,0,0"/> 
                 <TextBlock FontWeight="Medium" Text="{Binding MiddleName}" Margin="40,0,0,0" HorizontalAlignment="Left" Grid.Row="0" FontSize="20" Foreground="White"/> 
                 <Grid Grid.Row="1"> 
                  <Grid.ColumnDefinitions> 
                   <ColumnDefinition/> 
                   <ColumnDefinition/> 
                  </Grid.ColumnDefinitions> 
                  <TextBlock FontWeight="Medium" Text="{Binding FirstName}" TextAlignment="Left" Margin="40,-22,0,0" Grid.Column="0" FontSize="20" Foreground="Gray"/> 
                  <TextBlock FontWeight="Medium" HorizontalAlignment="Right" Grid.Column="0" Text="," FontSize="20" Margin="0,-22,-3,0" Foreground="Gray"/> 
                  <TextBlock FontWeight="Medium" Text="{Binding LastName}" TextAlignment="Right" Grid.Column="1" Margin="6,-22,0,0" FontSize="20" Foreground="Gray"/> 
                 </Grid> 
                </Grid> 
                <Button.Flyout> 
                 <MenuFlyout Placement="Right"> 
                  <MenuFlyoutItem Text="Open" Click="MenuFlyoutItem_Click"/> 
                  <MenuFlyoutItem Text="Edit" x:Name="editsenderclick" Click="editsenderclick_Click"/> 
                 </MenuFlyout> 
                </Button.Flyout> 
               </Button> 
              </StackPanel> 

             </DataTemplate> 
            </GroupStyle.HeaderTemplate> 
           </GroupStyle> 
          </ListBox.GroupStyle> 
         </ListBox> 

とC#:

listSearchResults.GroupBy(x => x.FirstName[0]).ToList(); listSearchResults.Sort((x,y)=> string.Compare(x.FirstName,y.FirstName)); cvs.Source = listSearchResults;

そして私はこれを得ている result

ありがとうございます。

答えて

0

少なくとも、私は怒鳴るコードとして使用するグループのコレクションを提案することができます。その後

cvs.Source = peopleCollection.OrderBy(x => x.FirstName).GroupBy(x => x.FirstName[0]).ToList(); 

を使用すると、オブジェクトList<IGrouping<char, Person>>タイプを取得します。

あなたの間違いを定義してListBox.GroupStyleとしています。このセクションではヘッダープレゼンテーションのみを定義し、セクション内のコレクションにはItemTemplateを定義する必要があります。 charm.Thanksたくさんの男のような

<ListBox Background="#282828" x:Name="sendersearchresults" ItemsSource="{Binding Source={StaticResource cvs}}"> 
     <ListBox.GroupStyle> 
      <GroupStyle> 
       <GroupStyle.HeaderTemplate> 
        <DataTemplate> 
         <StackPanel Margin="20,0,0,0"> 
          <TextBlock Foreground="#FFCF06" 
             FontSize="40" 
             FontWeight="Normal" 
             Text="{Binding Key}" /> 
         </StackPanel> 
        </DataTemplate> 
       </GroupStyle.HeaderTemplate> 
      </GroupStyle> 
     </ListBox.GroupStyle> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <Button Background="Transparent" Margin="-100,0,0,0" BorderThickness="0" BorderBrush="Transparent" Width="400"> 
        <Grid> 
         <Grid.RowDefinitions> 
          <RowDefinition/> 
          <RowDefinition/> 
         </Grid.RowDefinitions> 
         <Image Source="{Binding Icon}" Grid.Row="0" Width="50" Height="50" HorizontalAlignment="Left" Margin="-12,4,0,0"/> 
         <TextBlock FontWeight="Medium" Text="{Binding MiddleName}" Margin="40,0,0,0" HorizontalAlignment="Left" Grid.Row="0" FontSize="20" Foreground="White"/> 
         <Grid Grid.Row="1"> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition/> 
           <ColumnDefinition/> 
          </Grid.ColumnDefinitions> 
          <TextBlock FontWeight="Medium" Text="{Binding FirstName}" TextAlignment="Left" Margin="40,-22,0,0" Grid.Column="0" FontSize="20" Foreground="Gray"/> 
          <TextBlock FontWeight="Medium" HorizontalAlignment="Right" Grid.Column="0" Text="," FontSize="20" Margin="0,-22,-3,0" Foreground="Gray"/> 
          <TextBlock FontWeight="Medium" Text="{Binding LastName}" TextAlignment="Right" Grid.Column="1" Margin="6,-22,0,0" FontSize="20" Foreground="Gray"/> 
         </Grid> 
        </Grid> 
        <Button.Flyout> 
         <MenuFlyout Placement="Right"> 
          <MenuFlyoutItem Text="Open" Click="MenuFlyoutItem_Click"/> 
          <MenuFlyoutItem Text="Edit" x:Name="editsenderclick" Click="editsenderclick_Click"/> 
         </MenuFlyout> 
        </Button.Flyout> 
       </Button> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

(アイコンとMiddleNameなし)最終結果を見

[1]: https://i.stack.imgur.com/7A

+0

作品:だから、このような個別のコードが必要です。 – tushargoyal1309

+0

画像が整列していない理由は何ですか? – tushargoyal1309

関連する問題