결과를 그룹화하려는 ListView
이 있지만 찾으려는 예제는 작동하지 않습니다. 결과를 어떻게 그룹화 할 수 있습니까?WPF ListView에서 항목을 그룹화하는 방법
사용자 지정 개체의 Status
속성으로 그룹화하려고합니다.
이
내가 무엇을 가지고 :<ListView IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding}"
HorizontalContentAlignment="Stretch"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
Background="Transparent" SelectionChanged="ListView_SelectionChanged"
Name="lstShelvedOrders">
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock FontWeight="Bold" FontSize="15"
Text="{Binding Path=Status}"/>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListView.GroupStyle>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="BorderThickness" Value="1" />
<Setter Property="Width" Value="Auto" />
<Setter Property="FontSize" Value="10.4" />
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=Number}" Header="Shelve ID" />
<GridViewColumn DisplayMemberBinding="{Binding Path=Customer}" Header="Customer" />
<GridViewColumn DisplayMemberBinding="{Binding Path=PurchaseOrderNo}" Header="PO Number" />
<GridViewColumn DisplayMemberBinding="{Binding Path=SubmittedBy}" Header="Shelved By" />
<GridViewColumn DisplayMemberBinding="{Binding Path=OrderDate, StringFormat=MMM dd\, yyyy}" Header="Date" />
<GridViewColumn DisplayMemberBinding="{Binding Path=CustomerTerms.Description}" Header="Order Terms" />
<GridViewColumn DisplayMemberBinding="{Binding Path=ShippingMethod.Description}" Header="Shipping" />
<GridViewColumn DisplayMemberBinding="{Binding Path=TotalPrice, StringFormat=c}" Header="Order Total" />
</GridView>
</ListView.View>
</ListView>
그리고 이것은 내가 가지고있는 코드입니다 : 지금 당장 한 가지를 발견
void ShelvedOrderList_DataContextChanged(object sender, System.Windows.DependencyPropertyChangedEventArgs e)
{
AddGrouping();
}
private void AddGrouping()
{
if (lstShelvedOrders.ItemsSource == null)
{
return;
}
CollectionView myView = (CollectionView)CollectionViewSource.GetDefaultView(lstShelvedOrders.ItemsSource);
PropertyGroupDescription groupDescription = new PropertyGroupDescription("Status");
myView.GroupDescriptions.Add(groupDescription);
}
글쎄, 지금 현재 그룹의 세 개의 인스턴스를 얻고, 그러나 그것의 분류는이기는 것이다. 여기 내 개인 영웅이되고 있습니다. – Russ
이 코드는 MVVM 환경에서 어떻게 사용할 수 있습니까? 목록 항목이 설정된 코드 줄이 없습니다. 그들은 바인딩을 통해 사용됩니다. AddGrouping() 메서드를 연결할 수있는 이벤트를 찾을 수 없습니다. 전체 사용자 정의 컨트롤의 DataContext가 변경되면 목록의 ItemsSource는 여전히 null입니다. 나는 그것이 조금 더 오래 걸린다 고 생각한다. – ygoe
적절한 그룹화를 사용하여 [CollectionViewSource] (http://msdn.microsoft.com/en-us/library/system.windows.data.collectionviewsource.aspx)를 XAML에 만들고 대신 컨트롤을 바인딩 할 수 있습니다. 소스 컬렉션을 직접. –