次のview.xamlがあり、コレクション(viewmodelからのSavedTracksCollection)をこのリストボックスにバインドすると、アイテムがUIに表示されます。
<phone:PanoramaItem Name="MusicTracks" Header="Saved Tracks" >
<Grid>
<ListBox x:Name="list" ItemsSource="{Binding SavedTracksCollection}" SelectedItem="{Binding SelectedItemTrack,Mode=TwoWay}">
<ListBox.ItemTemplate>
<DataTemplate>
<Button Background="Red" >
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding TrackTitle}"/>
<TextBlock Text="{Binding TrackUri}"/>
</StackPanel>
</Button>
<DataTemplate>
</ListBox.ItemTemplate>
</Grid>
</phone:PanoramaItem>
そして、「SelectedItemTrack」をバインドするselecteditemのビューモデルで次のプロパティが定義されています(このビューモデルはビューのデータコンテキストとして設定されています)。そして、SavedTracksCollectionをリストのアイテムソースにバインドしています。
private SavedTracksModel _SelectedItemTrack;
public SavedTracksModel SelectedItemTrack
{
get {
return _SelectedItemTrack;
}
set
{
if (value!=null)
_SelectedItemTrack = value;
//RaisePropertyChanged("SelectedItemTrack"); I dont think we need this.Let me know otherwise.
}
}
private List<SavedTracksModel> _SavedTracksCollection = new List<SavedTracksModel>();
public List<SavedTracksModel> SavedTracksCollection
{
get
{
return GetSavedTracks();
}
set
{
this._SavedTracksCollection = value;
RaisePropertyChanged("SavedTracksCollection");
}
}
しかし、ユーザーがリストボックスからアイテムを選択したときに SelectedITem イベントをキャプチャする方法を決定することはできません。現在、SelectedITemTrack の set メソッドをトリガーしません。 「トラックを再生できる新しいページに移動したい。
問題を解決する方法はありますか?