c # - Er der et standardtidsinterval for medierede begivenheder, der skal fyres?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en WPF-applikation, der dynamisk indlæser video- eller billedfiler (afhængigt af brugerens valg til en MediaElement kontrol.
Det virker fint, når det er en video, og får MediaEnded hændelsen fyret på at afslutte videoen.
Men når jeg lægger et billede, afbrydes MediaEnded hændelsen inden for 5 sekunder.
Er det en standardværdi? eller kan jeg ændre det programmatisk?
Er der nogen egenskab for at ændre dette interval eller deaktivere en sådan mulighed?
Er det muligt at gøre det pauset indtil en bestemt handling?


Jeg har angivet følgende egenskaber som følger


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

Bedste reference


MediaElement er en (meget tynd) wrapper omkring Windows Media Player (eller rettere - bruger den samme ramme som bruges af Windows Media Player). Hvis du åbner et billede i Windows Media Player - du vil se det vil 'afspille' det som et diasshow (selv for 1 billede) i ca. 5 sekunder. Det er derfor, du får MediaEnded begivenhed om 5 sekunder - Windows Media Player afspiller diasshow med dit billede i den periode. Jeg tvivler på, at der er en måde at ændre dette fra WPF (fordi det er adfærd af eksternt program \ ramme , ikke relateret til MediaElement selv) og jeg er ikke opmærksom på måden at ændre dette til Windows Media Player (og selv om der er sådan en måde - det vil have global effekt, og du vil sandsynligvis ikke ændre din klients computer på en sådan måde).


For at løse dit problem - brug bare MediaElement til at vise billeder - brug noget som Image kontrol. Hvis du har rigtige stærke grunde til at gøre det - kan du sætte MediaElement 12]] metode efter at dit 'lysbilledshow' er blevet indlæst, så brænder det ikke MediaEnded. Alt i alt - jeg kan ikke forestille mig nogen brugstilfælde, hvor du virkelig skal bruge MediaElement til billeder.

Andre referencer 1


Du kan gentage mediet, når du indlæser billedet. Håndter MediaEnded begivenhed som denne:


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


Se også dette. Det kan hjælpe:
https://stackoverflow.com/a/3406857/5675763