绑定在DataTemplate里面的ListView的SelectedItem

问题描述:

我目前正在研究一个音乐播放器应用程序,并且我被卡在应用程序中所有ListView中高亮显示播放轨迹。绑定在DataTemplate里面的ListView的SelectedItem

例如,有一个包含相册列表的页面,其中每个相册都包含一个带有list of songs的DataTemplate。当你第一次选择它并且所选的项目被绑定到视图模型时,一切都很好。但在离开并返回该页面时,视图模型保留关于正在播放的歌曲的信息,but the binding doesn't cause the item to be highlighted

这是我的XAML:

<ListView x:Name="lstSongs" 
    ItemsSource="{Binding attachments}" 
    SelectionChanged="lstSongs_SelectionChanged" 
    ScrollViewer.VerticalScrollMode="Disabled" 
    SelectedValue="{Binding DataContext.selectedSong, ElementName=Group_Page}" 
    SelectedItem="{Binding DataContext.selectedSong, ElementName=Group_Page}" 
    ItemContainerStyle="{StaticResource ListViewTextHighlight}" 
    Grid.Row="1"> 

绑定的SelectedItem和的SelectedValue只是为了看看任何一个会工作。

我可能错过了一些明显的东西,但我希望有人能帮助我。

谢谢!

+0

有通常没有理由绑定“的SelectedItem /值”对视图模型,为什么不绑定到直接的元素? 尽管我没有放弃理解这个问题,但这可能是一件可以帮助你的事情。 另一个问题 - 数据上下文中究竟有什么?任何原因你绑定到页面的datacontext并没有一个视图本身? – MichaelThePotato

+0

@MichaelThePotato我不太确定我是否直接绑定元素。你什么意思? 至于为什么我绑定到页面的viewmodel,listview的默认viewmodel是父级listview,所以它不公开相关的字段,我可以检索当前的歌曲 –

我觉得SelectedItem的结合需要有Mode=TwoWay

SelectedItem="{Binding DataContext.selectedSong, ElementName=Group_Page, Mode=TwoWay }" 
+0

我唯一要补充的是这个不是唯一可能发生的问题。如果他试图绑定SelectedItem的东西不是1.属性和2.正确的数据类型,它也不会工作。 –

+0

顺便说一句,这不是偶然吗? http://www.stevewilkos.com/ –

+1

@AnthonyRussell哈哈不是史蒂夫威尔科斯的罪行:) – SWilko