私はMVVMが初めてで、作業中のプログラムをMVVMプログラムに変換しようとしています。私はこれに対する答えを探していましたが、これまでのところ運がありませんでした.
基本的に私が持っているのはこれです:リストボックスとリストビュー。リストボックスには駅がいっぱいで、駅からの時間をリストビューで表示したい(遅延など)。リストボックスにはステーションがいっぱいで、ステーションを選択するたびにステーションが更新され、'CurrentStation' という変数に保存されます。現在、この「CurrentStation」を使用して、そのステーションからのすべての出発の ObservableCollection リストを取得していますが、何らかの理由で、この関数は 1 回しか呼び出されず、別のステーションを選択しても更新されません。
また、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;
}
}