2017-10-04 109 views
1

我有一個動態加載視頻或圖像文件(取決於用戶的選擇,到一個MediaElement控制的WPF應用程序 它是工作正常,當它是一個視頻,並得到MediaEnded事件發射結束視頻 但是當我加載圖像時,MediaEnded事件在5秒內被觸發 是默認值嗎?還是我可以通過編程方式更改它? 是否有任何屬性可以更改此間隔或禁用此選項? 是否可以使其暫停直到具體操作?mediaended事件是否有任何默認的時間間隔被觸發?

我已經設置了以下屬性如下​​

MediaControl1.LoadedBehavior = MediaState.Manual; 
MediaControl1.UnloadedBehavior = MediaState.Manual; 

回答

1

MediaElement是一個圍繞Windows Media Player(或更確切地說 - 使用與Windows Media Player使用相同的框架)的(非常薄)包裝。如果您在Windows Media Player中打開圖像 - 您將看到它會像播放幻燈片一樣(即使是1張圖像)「播放」它約5秒鐘。這就是爲什麼你在5秒內得到MediaEnded事件 - Windows Media Player在那段時間內與你的圖像一起播放幻燈片。我懷疑有一種方法可以從WPF中改變它(因爲它是外部程序\框架的行爲,與MediaElement本身無關),我不知道如何改變Windows Media Player的這種方式(即使有這樣的一種方式 - 它會產生全局效應,你可能不想以這種方式修改你的客戶端計算機)。

要解決您的問題 - 只是不要使用MediaElement來顯示圖像 - 使用類似Image控件。如果你真的有很強的理由這麼做 - 你可以在加載「幻燈片」之後用Pause方法暫停MediaElement,然後它不會觸發MediaEnded事件。總而言之 - 我無法想象任何使用情況下,你真的必須使用MediaElement的圖像。

+0

絕對不是WMP。這一切都是由MilCore完成的,當然它正在包裝媒體基金會。我懷疑它來自[此](https://msdn.microsoft.com/en-us/library/windows/desktop/bb787399(v = vs.85).aspx)與UseValueForDefault = True和Medium。但是很難進行反向工程。 –

0

您可以在加載圖像時重複播放媒體。處理MediaEnded這樣的事件:

void me_MediaEnded(object sender, EventArgs e) 
{ 
    //play video again 
    mediaElement.Position = new TimeSpan(0, 0, 1); 
    mediaElement.Play(); 
} 

另外看到這個。它可能有所幫助: https://stackoverflow.com/a/3406857/5675763

相關問題