@Hlebushek9999

Проблемы с выделением в ListBox после удаления элемента, как исправить?

Есть такая проблема, после удаления элемента выделяю программно следующий если есть, но, как только я нажимаю стрелку для переключения выделения дальше, оно сбрасывается и выделяется самый первый элемент. Мне нужно чтобы я мог с выбранного элемента шагать стрелками вперед назад.
Например: Удаляю пятый элемент, затем выделяю следующий т.е. получается пятый, все выделилось, нажимаю стрелку вниз и вместо того чтобы выделился шестой выделяется 1, в этом и заключается проблема.
XAML элемента:
<ListBox x:Name="listBox_CollectionItems" Grid.Column="2" Margin="5,0,0,0" SelectionMode="Extended"  HorizontalContentAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Disabled" SelectionChanged="ListBox_CollectionItems_SelectionChanged" IsSynchronizedWithCurrentItem="True">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <Grid MaxHeight="98">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="167" />
                                <ColumnDefinition Width="*" />
                            </Grid.ColumnDefinitions>
                            <Image Grid.Column="0" Grid.RowSpan="2" HorizontalAlignment="Center" Height="94" Margin="0,2,0,2" VerticalAlignment="Top" Stretch="Uniform" Source="{Binding Path=Preview}"/>
                            <StackPanel Margin="5,2,0,2" Grid.Column="1">
                                <TextBlock TextWrapping="Wrap" VerticalAlignment="Top" Text="{Binding Path=Path}"/>
                                <TextBlock TextWrapping="Wrap" VerticalAlignment="Top" Foreground="Gray" Text="{Binding Path=Description}"/>
                            </StackPanel>
                        </Grid>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

Добавление элементов происходит в коллекцию listBox_CollectionItems.Items, через цикл.
Удаляю элемент так:
int currentCollectionItemIndex = listBox_CollectionItems.SelectedIndex;
listBox_CollectionItems.Items.RemoveAt(currentCollectionItemIndex);
  • Вопрос задан
  • 37 просмотров
Пригласить эксперта
Ответы на вопрос 2
@d-stream
Готовые решения - не подаю, но...
в listBox_CollectionItems.SelectedIndex после удаления что-нибудь вписывается?
Ответ написан
HemulGM
@HemulGM
Delphi Developer, сис. админ
int currentCollectionItemIndex = listBox_CollectionItems.SelectedIndex;
listBox_CollectionItems.Items.RemoveAt(currentCollectionItemIndex);
listBox_CollectionItems.SelectedIndex = currentCollectionItemIndex;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы