如何解决轮播视图绑定自动持续时间值-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 举报,一经查实,本站将立刻删除。