Нажмите, чтобы открыть файл - PullRequest
0 голосов
/ 18 августа 2011

В моем приложении есть ссылки на видео, теперь, когда вы нажимаете на ссылку, IE запускает и спрашивает «Нажмите, чтобы открыть файл»

Я надеялся прийти на это, какие-нибудь предложения?

Я использую простую гиперссылку, в качестве шаблона которой используется изображение,

1 Ответ

3 голосов
/ 18 августа 2011

Вместо использования свойства NavigateUri в HyperlinkButton вы можете воспроизвести видео внутри MediaElement на отдельной странице.

Сначала добавьте новую страницу в свой проект (MoviePlayer.xaml) и поместите один элемент MediaElement вЭто.Обработайте событие MediaElement.Loaded в коде, а также подключите события OnNavigatedTo и OnNavigatingFrom:

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    var qs = NavigationContext.QueryString["url"];
    MyMovie.Source = new Uri(qs, UriKind.Absolute);
}

protected override void OnNavigatingFrom(System.Windows.Navigation.NavigatingCancelEventArgs e)
{
    MyMovie.Stop();
    base.OnNavigatingFrom(e);
}

private void MyMovie_Loaded(object sender, RoutedEventArgs e)
{
    MyMovie.Position = new TimeSpan(0);
    MyMovie.Play();
}

Затем на главной странице измените HyperlinkButton для обработки события Click вместо установки свойства NavigateUri.и запустите что-то вроде этого:

private void HyperlinkButton_Click(object sender, System.Windows.RoutedEventArgs e)
{
    var button = sender as HyperlinkButton;
    var video = button.DataContext as VideoWrapperClass; // name, url, playing time, etc.
    NavigationService.Navigate(new Uri("/MoviePlayer.xaml?url=" + video.Url, UriKind.Relative));
}

Вот и все!При таком подходе вы также можете настроить воспроизведение, если хотите, или запустить некоторые пользовательские анимации, такие как бамперы или рекламные наложения.

Если вы предпочитаете использовать решение типа MVVM, просто нажмите на меняТвиттер на @chriskoenig, и я застрелю тебя за что-нибудь.

/ chris

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...