ListCollectionView перемещение элементов внутри группы вверх и вниз и обновление интерфейса - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть CommandListBox, который имеет Itemsource от ListCollectionView.Я хочу перемещать элементы в группах вверх / вниз и обновлять их в пользовательском интерфейсе.Прямо сейчас мне нужно обновить весь вид, чтобы показать новую сортировку, и тогда расширители закроются, и пользователь снова должен будет выбрать расширитель.

Как я могу перемещать элементы в группах вверх и вниз в позиции впользовательский интерфейс?

 controls:CommandListBox Grid.IsSharedSizeScope="True"
                                     Visibility="{Binding IsSearchperformed, Converter={StaticResource BooleanToVisibilityConverter}}"
                                     Grid.Column="2"
                                     HorizontalAlignment="Stretch"
                                     SelectedItem="{Binding SelectedResult}"
                                     ToolbarItems="{Binding ToolBarItems}"
                                     ItemsSource="{Binding SearchResults, UpdateSourceTrigger=PropertyChanged}">
                <ItemsControl.Resources>
                    <ResourceDictionary>
                        <Style x:Key="GroupHeaderStyle"
                               TargetType="{x:Type GroupItem}">
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate TargetType="{x:Type GroupItem}">
                    <Expander x:Name="exp"  IsExpanded="{Binding Path=Items[0].IsExpanded}" Margin="0,0,0,30" >
                                                <Expander.Header >
                                                    <TextBlock Text="{Binding Path=Name}" FontSize="18" Padding="0" Margin="0"/>
                                            </Expander.Header>
                                                    <Grid Margin="20 0 0 0" >
                                                        <Grid.ColumnDefinitions>
                                                            <ColumnDefinition Width="*"/>
                                                        </Grid.ColumnDefinitions>
                                                        <Grid.RowDefinitions>
                                                            <RowDefinition Height="*"/>
                                                            <RowDefinition Height="*"/>
                                                        </Grid.RowDefinitions>
                                                        <ContentPresenter Grid.Column="0"
                                                                          Grid.Row="0"
                                                            Content="{Binding Path=Items[0].DisplayRepresentation.Header}"/>
                                                        <ItemsPresenter Grid.Column="0"
                                                                        Grid.Row="1"/>
                                                    </Grid>
                                        </Expander>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </ResourceDictionary>
                </ItemsControl.Resources>
                <ItemsControl.GroupStyle>

                    <GroupStyle ContainerStyle="{StaticResource GroupHeaderStyle}">
                        <GroupStyle.Panel>
                            <ItemsPanelTemplate>
                                <DataGridRowsPresenter />
                            </ItemsPanelTemplate>
                        </GroupStyle.Panel>
                    </GroupStyle>
                </ItemsControl.GroupStyle>
                <ItemsControl.ItemTemplate>
                    <DataTemplate DataType="{x:Type local:PropertySearchResult}">
                        <ContentPresenter Content="{Binding DisplayRepresentation}" />
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </controls:CommandListBox>

public ListCollectionView SearchResults { 
    get => searchResults; 
    set => SetField(ref searchResults, value); 
}

public string SearchString {
    get => searchString;
    set {
        SetField(ref searchString, value);
        SearchResults.Refresh();
    }
}
...