não pode limpar a coleção ListBox.SelectedItems do WPF

Eu não consigo obter a coleção SelectedItems de um ListBox WPF vinculado a dados para limpar. Eu tentei chamar ListBox.SelectedItems.Clear (), eu tentei definir o SelectedIndex para -1, definindo o SelectedItem para null e chamando ListBox.UnselectAll (). Durante a depuração, parece que as atribuições não são realizadas ou algo está redefinindo a coleção SelectedItems, mas não sei ao certo. Eu coloquei um ponto de interrupção no retorno de chamada SelectionChanged e nunca é atingido inesperadamente ainda o membro SelectedItems.Count é sempre pelo menos 1 (às vezes, mais de 1 desde modo de seleção do ListBox é MultiExtended).

Alguém já viu isso antes e sabe o que estou fazendo de errado? Esta questão é aparentemente exatamente a mesma que esta:WPF - Como limpar a seleção do ListView?

exceto nesse post, Sonny Boy está usando um ListView e estou usando um ListBox. Em qualquer caso, a resposta votada foi chamar ListView.UnselectAll () que não funciona no meu caso.

Eu sinto que devo estar fazendo algo muito obviamente errado, já que limpar a seleção deve ser bem direto.

NOTA: Só para deixar claro, não quero remover as seleções da ListBox, só quero que nada seja selecionado.

obrigado!

                            <ListBox Background="{StaticResource ResourceKey=DarkGray}" Name="lbx_subimageThumbnails" Margin="6,6,6,0" ItemsSource="{Binding ElementName=lbx_thumbnails, Path=SelectedItem.Swatches}" Style="{StaticResource WPTemplate}" SelectionMode="Extended" Height="{Binding ElementName=sld_swatchRows, Path=Value}" VerticalAlignment="Top" SelectionChanged="lbx_subimageThumbnails_SelectionChanged" DataContext="{Binding}">
                            <ListBox.ItemsPanel>
                                <ItemsPanelTemplate>
                                    <WrapPanel HorizontalAlignment="Stretch" />
                                </ItemsPanelTemplate>
                            </ListBox.ItemsPanel>
                            <ListBox.ItemContainerStyle>
                                <Style TargetType="{x:Type ListBoxItem}">
                                    <Setter Property="Visibility" Value="{Binding Path=Vis}" />
                                </Style>
                            </ListBox.ItemContainerStyle>
                            <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <Grid Width="270" Height="270" Margin="5,5,5,5" Tag="{Binding}" Name="lbx_swatchThumbnail" Background="{StaticResource ResourceKey=LightGray}" PreviewMouseLeftButtonDown="lbx_swatchThumbnail_PreviewMouseLeftButtonDown" PreviewMouseMove="lbx_swatchThumbnail_PreviewMouseMove">
                                        <Grid.LayoutTransform>
                                            <ScaleTransform CenterX="0" CenterY="0" ScaleX="0.50" ScaleY="0.50" />
                                        </Grid.LayoutTransform>
                                        <Grid.ContextMenu>
                                            <ContextMenu>
                                                <MenuItem Header="Sync selected" Click="btn_syncSwatch_Click" />
                                                <MenuItem Header="Re-export selected" Click="btn_exportSelected_Click"/>
                                                <MenuItem Header="Set as default thumbnail" Click="btn_setThumbnail_Click"/>
                                                <MenuItem Header="Delete selected" Click="btn_deleteSwatch_Click"/>
                                                <MenuItem Header="Show in Explorer" Click="mnu_showSwatchesInExplorer_Click" />
                                                <MenuItem Header="Create Frames" Click="mnu_createFrames_Click" ToolTip="Creates FRAMEs groups to your PSD file under the Group associated with the selected swatch. DO NOT RE-ORDER OR RENAME THE GENERATED groups!" />
                                                <MenuItem Header="Create MIPs" Click="mnu_createMIPs_Click" ToolTip="Creates MIPs groups to your PSD file under the Group associated with the selected swatch. DO NOT RE-ORDER OR RENAME THE GENERATED groups!" />
                                            </ContextMenu>
                                        </Grid.ContextMenu>
                                        <Border BorderBrush="Black" BorderThickness="1">
                                            <Grid ToolTip="{Binding Path=Texture}">
                                                <Image VerticalAlignment="Center" HorizontalAlignment="Center" PhotoLoader:Loader.DisplayOption="Preview" PhotoLoader:Loader.DisplayWaitingAnimationDuringLoading="True" PhotoLoader:Loader.Source="{Binding Path=Texture}" PhotoLoader:Loader.DisplayErrorThumbnailOnError="True" Width="256" Height="256" />
                                                <TextBlock VerticalAlignment="Top" HorizontalAlignment="Center" Margin="0,10,0,0" FontSize="20"  Text="{Binding Path=Group}" Background="Black" Foreground="White"/>
                                                <TextBlock VerticalAlignment="Bottom"  HorizontalAlignment="Center" Background="Black" Margin="0,0,0,10" FontSize="20" Foreground="White">
                                                    <TextBlock.Text>
                                                        <MultiBinding StringFormat="{}{0} x {1} {2}" >
                                                            <Binding Path="Width" />
                                                            <Binding Path="Height" />
                                                            <Binding Path="Format" />
                                                        </MultiBinding>
                                                    </TextBlock.Text>
                                                </TextBlock>
                                            </Grid>
                                        </Border>
                                    </Grid>
                                </DataTemplate>
                            </ListBox.ItemTemplate>
                        </ListBox>


        // this callback kicks everything off. 
        private void btn_editSwatch_Click(object sender, RoutedEventArgs e)
        {
            // get a list of the selected indices - we will have to unselect the texture source and reselect it after the re-export in order to force the thumbnail display to update
            // so we will save a list of indices to reselect them after the export
            List selectedIndices = new List();
            for (int i = 0; i < lbx_subimageThumbnails.Items.Count; i++)
            {
                if (lbx_subimageThumbnails.SelectedItems.Contains(lbx_subimageThumbnails.Items[i]))
                {
                    selectedIndices.Add(i);
                }
            }<p></p>

<pre><code>        // store the index of the selected texture source to reselect it after the re-export
        int selIndex = lbx_thumbnails.SelectedIndex;

        // edit and re-export the selected thumbnails
        if (this.EditThumbnails(lbx_subimageThumbnails.SelectedItems, lbx_thumbnails.SelectedItem))
        {

            // re-select the texture source
            lbx_thumbnails.SelectedIndex = selIndex;

            // re-select the previously selected thumbnails.
            foreach (int index in selectedIndices)
            {
                if (!lbx_subimageThumbnails.SelectedItems.Contains(lbx_subimageThumbnails.Items[index]))
                {
                    lbx_subimageThumbnails.SelectedItems.Add(lbx_subimageThumbnails.Items[index]);
                }
            }
        }
    }

    private void lbx_subimageThumbnails_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        ListBox textureSelector = sender as ListBox;
        if (textureSelector != null)
        {
            //update some UI elements
        }
    }

    /*
    this is the SelectionChanged callback for another listbox which is bound as the ItemSource of lbx_subimageThumbnails. When the selection here changes, we default the selection of the subimage listbox to the first subimage after first clearing the selected items in the subimage listbox
    */
    private void lbx_thumbnails_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        // clear the previous swatch selection and select the first thumbnail
        // None of these methods works. after each, lbx_subimageThumbnails.SelectedItems.Count is still >= 1
        // Also, trying to set the SelectedIndex doesn't take. After the assignment, debugger shows                          
        // SelectedIndex is still 0 
        lbx_subimageThumbnails.SelectedIndex = -1;
        lbx_subimageThumbnails.SelectedIndex = -1;

        // Trying to set SelectedItem to null doesn't work...after assignment, SelectedItem is still a vaild
        // reference
        this.lbx_subimageThumbnails.SelectedItem = null;
        if (lbx_subimageThumbnails.SelectedItems.Count > 0)
        {
            lbx_subimageThumbnails.UnselectAll();
            lbx_subimageThumbnails.SelectedItems.Clear();
        }

        lbx_subimageThumbnails.SelectedIndex = 0;

        // reset the preview pane size
        sld_previewSize.Value = 1.0;
    }
</code></pre>

questionAnswers(1)

yourAnswerToTheQuestion