2013-09-16 35 views
0

我的MVVM程序是一個媒體播放器,並使用Media Element的Natural Duration屬性設置媒體時間軸的持續時間。在我實現MVVM設計模式之前,我可以簡單地在代碼隱藏中放置如何使用MediaElement.NaturalDuration在WPF MVVM中設置MediaTimeline.Duration

MyMediaTimeline.Duration = MyMediaElement.NaturalDuration; 

。我是使用MVVM的新手,但我相信這不是根據MVVM設計模式執行此操作的正確方法。我相信MediaElement.NaturalDuration不是一個依賴屬性,因此它不能直接綁定。我需要以某種方式使它成爲依賴項屬性嗎?這會在ViewModel中編碼嗎?

回答

1

當我們需要實現與使用MVVM的UI控件相關的功能時,我們有幾個選項。一種是實現某種可以爲我們實現此功能的服務或管理員類,另一種是使用Attached Properties。出了這兩個兩個選項,我相信這第二個選項更適合這個問題。

但是,將事件處理程序添加到視圖後面的代碼中(即使使用MVVM)絕對沒有任何問題。 I keep看到新用戶驚慌失措,而不是在使用MVVM時使用代碼。這是關於MVVM的常見誤解。

如果您真的知道如何正確使用Attached Properties,那麼我會建議您使用一個(或多個)這些來解決您的問題,否則我會高興地建議您使用後面的代碼。請注意,如果您的視圖模型是正確綁定到您的視圖中的數據,那麼你就可以從代碼中訪問您的視圖模型的背後是這樣的:

TypeOfViewModel viewModel = (TypeOfViewModel)DataContext; 
+0

其良好的知道我可以在代碼中使用事件處理程序的後面。感謝您的建議。我將繼續嘗試實施附加的屬性。謝謝。 @Sheridan – smrsun2013