обновление ListView из ViewModel без ObservableCollection

106
07 декабря 2019, 10:10

У меня на форме есть ListView который сбиндин с коллекцией List находящейся во ViewModel

<ListView Grid.Row="1" 
              ItemsSource="{Binding Path=Call_list, UpdateSourceTrigger=PropertyChanged}"
              SelectedIndex="{Binding Path=Call_selected_index, UpdateSourceTrigger=PropertyChanged}"
              PreviewMouseLeftButtonUp="ListView_Call_Selected">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="Call" Width="100" DisplayMemberBinding="{Binding Path=Name}"/>
                <GridViewColumn Header="Strike" Width="100" DisplayMemberBinding="{Binding Path=Strike}"/>
                <GridViewColumn Header="Bid" Width="100" DisplayMemberBinding="{Binding Path=Bid}"/>
                <GridViewColumn Header="Ask" Width="100" DisplayMemberBinding="{Binding Path=Ask}"/>
                <GridViewColumn Header="Theoretical price" Width="100" DisplayMemberBinding="{Binding Path=TheoreticalPrice}"/>
                <GridViewColumn Header="Last" Width="100" DisplayMemberBinding="{Binding Path=Last}"/>
                <GridViewColumn Header="Volume total" Width="100" DisplayMemberBinding="{Binding Path=Volume}"/>
                <GridViewColumn Header="Volume Bid" Width="100" DisplayMemberBinding="{Binding Path=ValumeBid}"/>
                <GridViewColumn Header="Volume Ask" Width="100" DisplayMemberBinding="{Binding Path=VolumeAsk}"/>
                <GridViewColumn Header="OI" Width="100" DisplayMemberBinding="{Binding Path=OI}"/>
                <GridViewColumn Header="Delta" Width="100" DisplayMemberBinding="{Binding Path=Delta}"/>
                <GridViewColumn Header="Vega" Width="100" DisplayMemberBinding="{Binding Path=Vega}"/>
                <GridViewColumn Header="Gamma" Width="100" DisplayMemberBinding="{Binding Path=Gamma}"/>
                <GridViewColumn Header="Thetta" Width="100" DisplayMemberBinding="{Binding Path=Thetta}"/>
            </GridView>
        </ListView.View>
    </ListView>

ViewModel сделал следующим образом:

class OptionDeskManager : INotifyPropertyChanged
{
    public List<Desk_DataItems> Call_list { get; set; } = new List<Desk_DataItems>();

    public event PropertyChangedEventHandler PropertyChanged;
    protected void NotifyPropertyChanged(string propertyName)
        {
            PropertyChanged?.Invoke(this, new         
protected void NotifyPropertyChanged(string propertyName)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }PropertyChangedEventArgs(propertyName));
        }
}

После перезаполнения коллекции Call_list - я вызываю NotifyPropertyChange("Call_list");

однако коллекция не обновляется. Я выбрал List вместо ObservableCollection так как мне иногда нужно просто обновлять данные не перезаписывая коллекцию,соответственно именно для этого и подписываю View на событие PropertyChanged.

Т.е. я единожды заполняю коллекцию, затем просто изменяю некоторые из ее элементов. к примеру Call_list[0].Delta= 0.5; NotifyPropertyChange("Call_list"); как то так

Однако коллекция не обновляется. помогите разобраться где у меня недочет ?

READ ALSO
Объекты в коллайдере 2D

Объекты в коллайдере 2D

Не могу разобраться как получить список объектов в коллайдереНюанс в том, что несколько объектов появляются одновременно и ОнТриггерИнтео...

114
Передать из 1 viewmodel значения во вторую

Передать из 1 viewmodel значения во вторую

Использую WPF и паттерн MVVMХочу передать из одной viewmodel в другую значения(допустим текст)

142
Запись данных в объект класса с формы DataGridView

Запись данных в объект класса с формы DataGridView

Подскажите пожалуйста как записать данные в объект класса в формы DataGridViewМне нужно считать все строки с формы для дальнейшей сериализации

125
Конструктор форм не видит базовый класс

Конструктор форм не видит базовый класс

Имеется базовый класс для формы и собственно форма, которая его наследует:

138