微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

轮播视图绑定自动持续时间值-Xamarin.forms

如何解决轮播视图绑定自动持续时间值-Xamarin.forms

在我的xamarin.forms应用中,我正在使用Cardview的link cubeview。多维数据集视图类似于轮播,具有称为自动滑动的属性。我们可以设置持续时间,在该时间后它将自动滑动。在此多维数据集视图中,我使用了两个不同的模板。一个用于显示图像,另一个用于显示视频。我可以使用数据模板选择器显示这两个不同的视图。一切正常。

现在,由于对auto slide属性进行了硬编码,即使视频或图像已完全加载(我正在从URL提取它们),视图也会滑动。如何将自动持续时间值绑定或引用到图像和视频的加载属性

对于图像视图,我正在使用FFImageloading

对于视频观看,我正在使用Rox.Xamarin.Video

总而言之,如果加载了图像,我想将自动幻灯片的值设置为7 seconds,如果是视频,我希望自动幻灯片的持续时间必须是视频的持续时间。我怎样才能做到这一点?谢谢您的帮助。

我的多维数据集视图

   <cards:CubeView
            x:Name="StatusCarousal" 
            IsClippedToBounds="True"

            SlideShowDuration="7000"   // This value needs to be bind according to template
    
            IsverticalSwipeEnabled="True"
            ItemSwiped="StatusCarousal_ItemSwiped"
            PropertyChanged="StatusCarousal_PropertyChanged"
            ItemsSource="{Binding}"                                           
            ItemTemplate="{StaticResource personDataTemplateSelector}"          
            HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"  >
                </cards:CubeView>

数据模板

  <ContentPage.Resources>
        <ResourceDictionary>
            <DataTemplate x:Key="Page1Template" >
                    <ffimageloading:CachedImage Grid.Column="0" Grid.ColumnSpan="3"
                             x:Name="StoryImage"
                             HorizontalOptions="FillAndExpand"
                             VerticalOptions="FillAndExpand"
                             Source="{Binding Image}"    
                             Aspect="AspectFill"
                             Success="CachedImage_Success"
                             FileWriteFinished="CachedImage_FileWriteFinished"
                             DownsampletoViewSize="true"
                             DownloadStarted="CachedImage_DownloadStarted"
                               >
                                </ffimageloading:CachedImage>
            </DataTemplate>

            <DataTemplate x:Key="Page2Template">
                 <rox:VideoView    Source="{Binding VideoURl}" Autoplay="True" FullScreen="True"                                                  
                                                  Grid.Column="0" Grid.ColumnSpan="3"                                                                                                                   
                                                  HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"                                           
                                        >
                                </rox:VideoView>
                </Grid>
            </DataTemplate>
            <local:PersonDataTemplateSelector x:Key="personDataTemplateSelector"
            Page1="{StaticResource  Page1Template}"
            Page2="{StaticResource  Page2Template}" />
        </ResourceDictionary>
    </ContentPage.Resources>

模型类

public partial class InnerStoreisData : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
        private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
        {
            PropertyChanged?.Invoke(this,new PropertyChangedEventArgs(propertyName));
        }
        public string UserName { get; set; }
        public ImageSource profileImage { get; set; }
        public string VideoURl { get; set; }
        public string Image { get; set; }
        public int Type { get; set; }
    
    }

模板选择器

public class PersonDataTemplateSelector : DataTemplateSelector
{
    public DataTemplate Page1 { get; set; }
    public DataTemplate Page2 { get; set; }

    protected override DataTemplate OnSelectTemplate(object item,BindableObject container)
    {
        switch (((InnerStoreisData)item).Type)
        {
            case 0:
                return Page1;
            case 1:
                return Page2;           
            default:
                return Page1;

        }

    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。