ComboBox problem z odświeżaniem zawartości kontrolki

0

Witam serdecznie,
mam prostą aplikację składającą się z przycisku i ComboBoxa.

Aplikacja działa w następujący sposób. Po kliknięciu na przycisk dodawany jest element do listy Indexes, która jest zbindowana z ComboBox (przepraszam za skróty myślowe).
Kliknięcie na wyżej wymieniony przycisk powoduje wybranie jako SelectedIndex ostatniego elementu listy.
Aplikacja działa zgodnie z założeniami do momentu w którym nie wybiorę innego elementu w ComboBox.
Po kliknięciu w przycisk ComboBox wyświetla wybrany przeze mnie element zamiast ostatniego elementu z listy, dopiero za drugim kliknięciem w przycisk ComboBox wyświetla ostatni element z listy.

Poniżej zamieszczam kod:

Pseudo Model:

public class ElementsIndexesList
    {
        public List<string> Indexes = new List<string>();

        public void Add()
        {
            Indexes.Add(Convert.ToString( Indexes.Count+1));
        }
     }

View:

<ComboBox x:Name="ToElement" Text="{Binding ToElement}" ItemsSource="{Binding IndexesList}" SelectedIndex="{Binding IndexesListCount, Mode=OneWay}"/>
<Button x:Name="Add" Command="{Binding AddCommand}" Content="Add"/>

ViewModel:

public class BaseViewModel : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        public void OnPropertyChange([CallerMemberName]string propertyName = null)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }


public class NewViewModel: BaseViewModel
    {
        private ElementsIndexesList IndexesListModel = new ElementsIndexesList();

        private int _indexesListCount;
        public int IndexesListCount
        {
            get { return _indexesListCount; }
            set { _indexesListCount = value; OnPropertyChange();}
        }

        private ObservableCollection<string> _indexesList;
        public ObservableCollection<string> IndexesList
        {
            get { return _indexesList; }
            set { _indexesList = value; OnPropertyChange(); }
        }
        
        public NewViewModel()
        {
            AddCommand = new DelegateCommand(Add, CanAdd);      
        }

        public DelegateCommand AddCommand { get; set; }
        
        private bool CanAdd(object obj)
        {
            return true;
        }

        private void Add(object obj)
        {
            IndexesListModel.Add();
            IndexesList = new ObservableCollection<string>(IndexesListModel.Indexes);
            IndexesListCount = IndexesList.Count;
        }
    }

Pozdrawiam i z góry dziękuję za pomoc.

0

wrzuć projekt VS, bo nie chce mi się tworzyć, a już od paru miesięcy nie robiłem nic poważnego na WPF :P, ale pamiętam, że kiedyś już to ogarniałem ;)

1

Projekt w załączniku, przepraszam że taka amatorszczyzna ale się śpieszyłem

2

Indeksowanie jest od zera, więc zmień tą linijkę:

 IndexesListCount = IndexesList.Count;

na tą :

 IndexesListCount = IndexesList.Count - 1;

1 użytkowników online, w tym zalogowanych: 0, gości: 1