绑定在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只是为了看看任何一个会工作。
我可能错过了一些明显的东西,但我希望有人能帮助我。
谢谢!
我觉得SelectedItem
的结合需要有Mode=TwoWay
SelectedItem="{Binding DataContext.selectedSong, ElementName=Group_Page, Mode=TwoWay }"
我唯一要补充的是这个不是唯一可能发生的问题。如果他试图绑定SelectedItem的东西不是1.属性和2.正确的数据类型,它也不会工作。 –
顺便说一句,这不是偶然吗? http://www.stevewilkos.com/ –
@AnthonyRussell哈哈不是史蒂夫威尔科斯的罪行:) – SWilko
有通常没有理由绑定“的SelectedItem /值”对视图模型,为什么不绑定到直接的元素? 尽管我没有放弃理解这个问题,但这可能是一件可以帮助你的事情。 另一个问题 - 数据上下文中究竟有什么?任何原因你绑定到页面的datacontext并没有一个视图本身? – MichaelThePotato
@MichaelThePotato我不太确定我是否直接绑定元素。你什么意思? 至于为什么我绑定到页面的viewmodel,listview的默认viewmodel是父级listview,所以它不公开相关的字段,我可以检索当前的歌曲 –