2015-01-29 4 views
1

Могу ли я использовать LINQ для группировки в ListBox? У меня есть свойствоListBox grouping и LINQ

public IEnumerable<IGrouping<string, Rout>> GroupedTypeRouts 
    { 
     get { return Routs.GroupBy(x => x.Transport); } 
    } 

И я хочу показать это в ListBox по группам.

Обновлено. Я попробовал этот

private CollectionViewSource groupedTypeRoutsView; 
    public CollectionViewSource GroupedTypeRoutsView 
    { 
     get 
     { 
      if (groupedTypeRoutsView == null) 
      { 
       groupedTypeRoutsView = new CollectionViewSource(); 
       groupedTypeRoutsView.IsSourceGrouped = true; 
       groupedTypeRoutsView.Source = GroupedTypeRouts; 

      } 

      return groupedTypeRoutsView; 
     } 
    } 
public IEnumerable<IGrouping<string, Rout>> GroupedTypeRouts 
    { 
     get { return Routs.GroupBy(x => x.Transport); } 
    } 

Но я не знаю, как показать это в ListBox

<ListView Grid.Row="2" 
         Grid.ColumnSpan="9" 
         ItemsSource="{Binding Source=GroupedTypeRoutsView}"> 
       <ListView.GroupStyle> 
        <GroupStyle> 
         <GroupStyle.HeaderTemplate> 
          <DataTemplate> 
           <Image Source="{Binding Key, Converter={StaticResource TransportToImageConverter}}"></Image> 
          </DataTemplate> 
         </GroupStyle.HeaderTemplate> 
        </GroupStyle> 
       </ListView.GroupStyle> 
      </ListView> 

Я получаю GroupedTypeRoutsView вместо значения и группы

+3

Это не будет работать из коробки. Таким образом, короткий ответ - Нет. Но ListBox поддерживает Группировку негруппированных данных из коробки. Вы найдете руководства, где это будет разрешено (http://www.wpf-tutorial.com/listview-control/listview-grouping/). Я не вижу никакой необходимости в LINQ здесь. – thmshd

+0

удалить Источник = .. –

+0

Так что я ничего не получаю –

ответ

0

Try:

private ListCollectionView groupedTypeRoutsView; 
    public ListCollectionView GroupedTypeRoutsView 
    { 
     get 
     { 
      if (groupedTypeRoutsView == null) 
      { 
       groupedTypeRoutsView = new ListCollectionView((IList)Routs); 
       groupedTypeRoutsView.GroupDescriptions.Add(new PropertyGroupDescription("Transport")); 
      } 

      return groupedTypeRoutsView; 
     } 
    } 


    <ListBox ItemsSource="{Binding GroupedTypeRoutsView}" /> 
+0

Я обновил вопрос –