2013-07-16 3 views
1

Мне нужно автовоспроизведение медиафайла, если пользователь прокручивает его в представлении.WinRT - определить, является ли элемент видимым для пользователя

я получил что-то вроде этого:

<ScrollViewer> 
    <ItemsControl ItemsSource="{Binding SelectedProduct.Entities}" ItemTemplateSelector="{StaticResource EntityDataTemplateSelector}" />    
</ScrollViewer> 

В одном из этих DataTemplates я использую медиа-плеер от PlayerFramework (PlayerFramework on codeplex).

Как пользователь прокручивает медиаплеер (вручную) в представление. Видео начнет играть.

Моя проблема: как определить, находится ли элемент в видовом экране?

Я пошел с this post раньше, но не работал на winrt.

Надеюсь, вы можете мне помочь. Спасибо заранее!

Джулиан

ответ

3

я мог бы решить эту проблему путем изменения метода от this post к:

private bool IsVisibileToUser (FrameworkElement element, FrameworkElement container) 
    { 
     if (element == null || container == null) 
      return false; 

     if (element.Visibility != Visibility.Visible) 
      return false; 

     Rect elementBounds = element.TransformToVisual(container).TransformBounds(new Rect(0.0, 0.0, element.ActualWidth, element.ActualHeight)); 
     Rect containerBounds = new Rect(0.0, 0.0, container.ActualWidth, container.ActualHeight); 

     return (elementBounds.Top < containerBounds.Bottom && elementBounds.Bottom > containerBounds.Top); 
    } 

Это работает только для вертикальной прокрутки. Если вам это нужно для горизонтальной прокрутки, вам нужно изменить возвращаемое значение в конце метода.

С уважением Julian

Смежные вопросы