2011-04-20 92 views
2

我有一个列表框绑定到集合,PlaylistTracks。 PlaylistTracks包含列表ID和曲目ID。所有曲目都存储在另一个收藏中,曲目。该集合具有曲目名称。列表绑定在silverlight 4(c#)与mvvm

我可以得到列表框来显示从未绑定到集合中的曲目名称吗?事情是这样的:

<ListBox Name="PlayListTracksBox" 
ItemsSource="{Binding Path=PlaylistTracks, Mode=TwoWay}" 
DisplayMemberPath="Tracks.Name" 
SelectedItem="{Binding Path=SelectedListTrack, Mode=TwoWay}"></ListBox> 
+3

我认为在更正确的MVVM实现中,您会将Track Name属性放在您绑定到列表中的ViewModels上。 – kindohm 2011-04-20 17:19:42

+0

+1以上评论。列表框项目如何知道如何“查找”轨道名称?正如kindohm所说,你需要将你绑定的列表弄平。 – 2011-04-20 17:50:33

回答

2

我相信无论什么阶级PlaylistTracks压倒一切ToString()含有会得到你想要的工作什么的最快方式。在ToString里面,你必须把你需要的逻辑放在正确的轨道上,并从中返回名字。

如果您可以将轨道名称放入您的ItemsSource中的顶层对象中,那么使用“Silverlighty”方法来实现此功能就是提供一个ItemTemplate并绑定到您想要的任何内容。例如:

<ListBox> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <TextBlock Text="{Binding Tracks.Name}"></TextBlock> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox>