carousal刷卡时停止并重置视频-Xamarin.forms
在我的xamarin.forms应用程序中,我有一个carousal视图,它以carousal刷卡时停止并重置视频-Xamarin.forms,xamarin,xamarin.forms,Xamarin,Xamarin.forms,在我的xamarin.forms应用程序中,我有一个carousal视图,它以MediaElement作为模板。视频从URL播放。我试图实现的是,当用户滑动carousal项目时,我希望当前播放的视频需要停止并播放绑定到该单元的下一个视频,当我们向后滑动时,上一个视频需要重新启动。目前正在播放的视频不会被关闭,当我们滑动下一个视频时,它也会被播放 我怎样才能解决这个问题?感谢您的帮助 带视频的狂欢节视图。 <CarouselView ItemsSource="{Binding }
MediaElement
作为模板。视频从URL播放。我试图实现的是,当用户滑动carousal项目时,我希望当前播放的视频需要停止并播放绑定到该单元的下一个视频,当我们向后滑动时,上一个视频需要重新启动。目前正在播放的视频不会被关闭,当我们滑动下一个视频时,它也会被播放
我怎样才能解决这个问题?感谢您的帮助
带视频的狂欢节视图。
<CarouselView ItemsSource="{Binding }" >
<CarouselView.ItemTemplate>
<DataTemplate>
<StackLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" >
<MediaElement AutoPlay="True" Aspect="AspectFill"
Source="{Binding Video}" /
</StackLayout>
</DataTemplate>
</CarouselView.ItemTemplate>
</CarouselView>
我们可以使用BindingContextChanged和PositionChanged事件
<CarouselView ItemsSource="{Binding }" PositionChanged="carouselView_PositionChanged">
<CarouselView.ItemTemplate>
<DataTemplate>
<StackLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" >
<MediaElement AutoPlay="True" Aspect="AspectFill"
Source="{Binding Video}" BindingContextChanged="MediaElement_BindingContextChanged" />
</StackLayout>
</DataTemplate>
</CarouselView.ItemTemplate>
</CarouselView>
暗藏
List<MediaElement> mediaElements = new List<MediaElement>();
private void MediaElement_BindingContextChanged(object sender, EventArgs e)
{
var element = sender as MediaElement;
mediaElements.Add(element);
}
private void carouselView_PositionChanged(object sender, PositionChangedEventArgs e)
{
mediaElements[e.PreviousPosition].Stop();
}
List mediaElements=new List();
私有void MediaElement_BindingContextChanged(对象发送方,事件参数e)
{
var-element=发送方作为MediaElement;
添加(元素);
}
私有void carouselView_PositionChanged(对象发送方,positionchangedventargs e)
{
mediaElements[e.PreviousPosition].Stop();
}
您可以使用位置更改命令| MediaElement上的事件
手动调用上的停止
方法
参数。(仅供参考:我们有很多内存/缓存问题w/MediaElement
,因此我们使用绑定单例的MediaElement
和/或一个小型缓存的MediaElement
控件,并将后进先出缓存列表绑定/预缓存到模板,而不是使用Xamarin的逻辑)@Sushingover Hi,感谢您的回复。使用位置更改事件时,如何停止mediaelement?由于mediaelement位于carousal内部,如何调用stop方法?还感谢memmory缓存问题信息。您可以通过RelativeBindingSourceMode
将CarouseView
的XAML中的位置更改命令绑定到其模板的MediaView,命令参数之一是PreviousItem
,它将有一个MediaView子级,这就是您调用的Stop
on。相对绑定: