我正在通過構建簡單的媒體播放器來學習C#/ WPF/MVVM。我在播放列表的MainViewModel中使用ICollectionView。我爲mediaelement構建了一個單獨的用戶控件,並使用一些代碼隱藏來處理音量,位置和時間線(http://www.codeproject.com/KB/smart/RSSVideoReader.aspx)。我知道MVVM的目標之一是消除代碼隱藏,但WPF mediaelement是獨一無二的。我現在試圖弄清楚如何讓代碼隱藏mediaelement的MediaEnded事件告訴MainViewModel的ICollectionView到MoveCurrentToNext。如何使用MVVM mediaelement移動到下一首歌曲
此代碼失敗:
MainViewModel
public void GoNext()
{
this.collectionView.MoveCurrentToNext();
}
MyMediaElement.xaml.cs(代碼後面)
private void mPlayDefault_MediaEnded(object sender, RoutedEventArgs e)
{
mPlayDefault.Stop();
this.GoNext();
}
如何獲得MainViewModel對MyMediaElement的事件作出反應? 謝謝
這是一個關於使用此特定媒體元素的更多問題。你可能不得不張貼一些代碼,但我猜只有使用過這個媒體播放器的人才能夠幫助你。也許發佈一個問題到CodeProject頁面? –
我不同意在使用MVVM時消除代碼隱藏應該是一個目標。我認爲目標應該是分離呈現(視圖)和行爲/機制(視圖模型)的獨立關注。因此,我不會在視圖中用一些代碼來通知視圖模型狀態改變的問題。 –
我同意丹尼爾,但我該怎麼做?代碼是什麼樣的? –