Я создаю приложение наподобие instagram в uwp, я хочу, чтобы при воспроизведении видео, когда пользователь прокручивал его вниз / вверх, после того, как элемент управления не показывался на виде, видео автоматически приостанавливается (точно так же, как Instagram).
Я ничего не пробовал, потому что не знаю, с чего мне начать.
Вот мой xaml:
<Page.Resources>
<DataTemplate x:Key="VideoTemplate">
<MediaElement MinHeight="300" MaxHeight="400" AutoPlay="False" AreTransportControlsEnabled="True" Source="{Binding Uri, Mode=OneWay}" PosterSource="{Binding PosterSourceUri,Mode=OneWay}">
<MediaElement.TransportControls>
<MediaTransportControls IsCompact="True"/>
</MediaElement.TransportControls>
</MediaElement>
</DataTemplate>
</Page.Resources>
<Grid>
<ListView x:Name="LVPosts"
SelectionMode="None"
ScrollViewer.VerticalScrollMode="Enabled"
ItemsSource="{Binding PostsGenerator.Items}"
ContainerContentChanging="LVPostsContainerContentChanging">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Margin"
Value="0" />
<Setter Property="Padding"
Value="5" />
<Setter Property="HorizontalContentAlignment"
Value="Stretch" />
<Setter Property="VerticalContentAlignment"
Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<ItemsStackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
</Grid>
Я подумал, что должен использовать событие ContainerContentChanging:
int LatestItemIndex = -1;
object LatestSelected = null;
private void LVPostsContainerContentChanging(ListViewBase sender, ContainerContentChangingEventArgs args)
{
try
{
if (LatestItemIndex != -1 && args.ItemIndex != LatestItemIndex && LatestSelected != null
&& LatestSelected is MyModel uc && uc != null)
{
((LVPosts.ItemsPanelRoot.Children[LatestItemIndex] as ListViewItem).ContentTemplateRoot as MediaElement).Stop();
}
}
catch { }
LatestSelected = args.Item;
LatestItemIndex = args.ItemIndex;
}
Но это не работает.
Как мне это сделать?