Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WPF ListBox SelectionChanged event

Tags:

c#

wpf

listbox

I have a problem with listbox. When in my program I click on one ListBoxItem, I want to change/open the window and preorder it before. But the problem is that it firstly fires the event and then it changes selection. Code:

private void LB_Playlist_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (LB_Playlist.SelectedItem != null)
        {
            try
            {
                List<string> _tempList = new List<string>();
                File_Load_List(LB_Playlist.SelectedItem.ToString(), _tempList);
                LoadListIntoBox(_tempList);
                G_SongList.Visibility = Visibility.Visible;
                AnimationMove(G_Playlist, G_Playlist.Margin, new Thickness(-264, 0, 0, 0), AnimationDuration, true);
                AnimationMove(G_SongList, new Thickness(264, 0, 0, 0), new Thickness(0, 0, 0, 0), AnimationDuration, false);

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
    }

When I tried it with MessageBox.Show(LB_Playlist.SelectedIndex.ToString()); It was working, selection was changing but the message was showing. Is there any way to change it?

like image 367
Kuba Wasilczyk Avatar asked Nov 17 '13 00:11

Kuba Wasilczyk


1 Answers

The SelectionChangedEventArgs will contain which item was deselected and which item was selected. Use e.AddedItems to get the newly selected items. e.g.

var addedItems = e.AddedItems;
if(addedItems.Count > 0)
{
    var selectedItem = addedItems[0];
    File_Load_List(selectedItem.ToString(), _tempList);
}

This way you do not need to worry about whether the event is raised before or after the control being updated, but you do know the event args contain the correct information.

like image 112
Lukazoid Avatar answered Oct 30 '22 12:10

Lukazoid