停止和重置视频时,狂欢刷卡- Xamarin.表单

dwbf0jvd  于 2023-11-15  发布在  其他
关注(0)|答案(1)|浏览(117)

在我的xamarin.forms应用程序中,我有一个以MediaElement为模板的carousal视图。视频从URL播放。我试图实现的是,当用户滑动carousal项目时,我希望当前播放的视频需要停止并播放绑定到该单元格的下一个视频,当我们向后滑动时,前一个视频需要重新启动。目前正在播放的视频不会关闭,当我们滑动下一个视频也会沿着播放。
我该怎么解决这个问题?任何帮助都很感激。

Carousal View with video.

<CarouselView ItemsSource="{Binding }" >    
        <CarouselView.ItemTemplate>    
            <DataTemplate>                       
                <StackLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"        >    
    
                 <MediaElement AutoPlay="True" Aspect="AspectFill"
                  Source="{Binding Video}" /  
                </StackLayout>    
            </DataTemplate>    
        </CarouselView.ItemTemplate>    
    </CarouselView>

字符串

xam8gpfp

xam8gpfp1#

我们可以使用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();
        }

相关问题