【发布时间】:2013-11-06 16:48:32
【问题描述】:
我有以下 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”。我将 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 方法。一旦我捕获带有所选项目详细信息的事件绑定“TrackUri”我想去一个可以播放曲目的新页面。
知道如何解决这个问题吗?
【问题讨论】:
-
这听起来像是一个绑定问题。调试时是否检查了输出窗口中的绑定错误?
-
我在编译或调试过程中没有看到任何错误。是否还需要为 SelectedITemTrack 调用 RaisePropertyChanged() 方法?。
标签: c# xaml windows-phone-7 mvvm windows-phone-8