나는 자신의 MaintenanceState로 그룹화 된 Vehicle 컬렉션을 보여주는 listView를 가지고 있습니다. 차량의 MaintenanceState가 그룹을 변경하기를 기대한다면. 컬렉션 자체는 올바르게 업데이트되지만 뷰는 그에 따라 업데이트되지 않습니다. 아래는 내 코드 중 일부입니다. 누군가가이 코드를 작동하도록 도울 수 있습니다. 항목이 그룹화 된 목록보기의 그룹을 변경하지 않습니다.
이
내 CollectionViewSource이 내가 내 뷰 모델에 할 것입니다<ListView ItemContainerStyle="{DynamicResource VehicleItemContainerStyle}"
ItemsSource="{Binding Source={StaticResource GroupedVehicles}}"
SelectedItem="{Binding SelectedItem}"
SelectionMode="Single"
Style="{DynamicResource VehiclesListViewStyle}">
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<StackPanel>
<Expander Header="{Binding Path=Name}"
IsExpanded="True"
Style="{DynamicResource VehicleListSectionExpanderStyle}">
<ItemsPresenter />
</Expander>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListView.GroupStyle>
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Number}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
내 ListView에 내 그룹을 여기에
<CollectionViewSource x:Key="GroupedVehicles" IsLiveGroupingRequested="True" Source="{Binding ItemCollection}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="MaintenanceState" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
가되어 관리되는 ItemCollection 유형
ObservableCollection<Vehicle>
이다
Vehicle updatedVehicle = new Vehicle(vehicleNumber, MaintenanceStateEnum.Running);
ItemCollection[index] = updatedVehicle;
차량을 추가, 제거 또는 교체해야합니다. MaintenanceStateEnum의 값은 InMaintenance, MarkedForMaintenance 및 Running입니다.
나는 자동차 (3, MaintenanceStateEnum.MarkedForMaintenace)을 가지고 있고이 차량으로 업데이트하는 경우 (3, MaintenanceStateEnum.InMaintenance) :
이 내 차량
public class Vehicle
{
public Vehicle(int number, MaintenanceStateEnum state) {}
public int Number { get; private set; }
public MaintenanceStateEnum MaintenanceState { get; private set; }
}
같은 내 문제 모습입니다 그룹화 된 유지 관리에서 그룹화 된 유지 관리로 변경되지 않습니다. 흥미로운 점은 MarkedForMaintenance 그룹에서 제거된다는 것입니다 (개체가 여전히있는 것처럼보기에도 공백이 남습니다).
아무도 내 문제를 해결할 수있는 방법을 알고 있습니까?
'ItemCollection'은 컬렉션의 이름이며 실제로 'ObservableCollection'유형입니다. 오브젝트가 한 그룹에서 다른 그룹으로 이동할 때 그룹핑이 빈 곳을 얻으므로 View가 변경 사항에 대한 통지를 받는다는 느낌이 들지만 오브젝트는 이동 한 그룹에 표시되지 않습니다. 그룹화 작업 (XAML에서 정의하는 방법)이 완전히 올바르지 않거나 뭔가 빠졌습니다. 어떤 아이디어가 있습니까? –
cherryorange