2016-07-26 90 views
0

我目前正在研究一個音樂播放器應用程序,並且我被卡在應用程序中所有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,所以它不公開相關的字段,我可以檢索當前的歌曲 –

回答

2

我覺得SelectedItem的結合需要有Mode=TwoWay

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

我唯一要補充的是這個不是唯一可能發生的問題。如果他試圖綁定SelectedItem的東西不是1.屬性和2.正確的數據類型,它也不會工作。 –

+0

順便說一句,這不是偶然嗎? http://www.stevewilkos.com/ –

+1

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