Я новичок в MVVM и пытаюсь преобразовать рабочую программу в программу MVVM. Я искал ответ для этого, но до сих пор не повезло.mvvm binding selecteditem для обновления listview
В основном, что у меня есть: список и список. Список заполнен Trainstations, и я хочу, чтобы время со станции находилось в списке (с задержкой и т. Д.). Список заполняется станциями, и я всякий раз, когда я выбираю станцию, он обновляется, и я имею его в переменной под названием «CurrentStation». Теперь я использую эту «CurrentStation», чтобы получить список ObservableCollection всех отправлений с этой станции, но по какой-то причине функция вызывается только один раз и не обновляется при выборе другой станции.
Я также не знаю, что связать в коде xaml.
<ListBox x:Name="lstStations" Margin="8" Grid.Row="1" ItemsSource="{Binding StationList}" SelectedItem="{Binding CurrentStation}" DisplayMemberPath="Name"/>
<ListView Grid.Column="1" Margin="8" Grid.Row="1" ItemsSource="{Binding Departures}" >
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Time, StringFormat=t}" Header="Time" />
<GridViewColumn DisplayMemberBinding="{Binding Delay, Converter={StaticResource mijnDelayConverter}}" Header="Delay"/>
<GridViewColumn DisplayMemberBinding="{Binding Station}" Header="Station"/>
<GridViewColumn DisplayMemberBinding="{Binding Vehicle}" Header="Vehicle"/>
<GridViewColumn Header="Platform" CellTemplate="{DynamicResource dataTemplateTextblock}" />
<!-- Haven't had the chance to look at this^I don't think this is correct though -->
</GridView>
</ListView.View>
</ListView>
А вот код ViewModel:
public string Name
{
get
{
return "MainPage";
}
}
public ObservableCollection<Station> StationList
{
get
{
return Station.GetStations();
}
}
private Station _currentStation;
public Station CurrentStation
{
get
{
return _currentStation;
}
set
{
_currentStation = value;
Console.WriteLine("New station selected: " + _currentStation.ToString());
OnPropertyChanged("CurrentStation");
}
}
private ObservableCollection<Departure> _departures;
public ObservableCollection<Departure> Departures
{
get
{
return Departure.GetDepartures(CurrentStation);
}
set
{
_departures = value;
}
}
Upvoted AIRL , но интересно, используете ли вы какие-либо фреймворки и как вы обрабатываете свой OnPropertyChanged ... – Noctis