代码之家  ›  专栏  ›  技术社区  ›  Tiago Crizanto

Xamarin ffimageloading插件点击至全屏

  •  1
  • Tiago Crizanto  · 技术社区  · 8 年前

    下面的代码使用 ffimageloading 组成部分我需要点击这个图像并全屏显示或缩放它。它可以通过ffimageloading实现吗?或者我需要在每个平台(android和ios)上实现它?

    看法

    <?xml version="1.0" encoding="utf-8" ?>
    <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
                 xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                 xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
                 prism:ViewModelLocator.AutowireViewModel="True"
                 xmlns:ffimageloading="clr-namespace:FFImageLoading.Forms;assembly=FFImageLoading.Forms"
                 x:Class="Namespace.Views.MyClass">
    
    <Grid Padding="0"
                      Margin="0"
                      BackgroundColor="{StaticResource BackgroundColor}">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="200" />
                        </Grid.RowDefinitions>
    
                        <ffimageloading:CachedImage 
                            Grid.Row="0"
                            Source="{Binding ThumbPath}"
                            Aspect="AspectFill">
                            <ffimageloading:CachedImage.LoadingPlaceholder>
                                <OnPlatform   
                                x:TypeArguments="ImageSource"
                                iOS="logo_header"
                                Android="logo_header" />
                            </ffimageloading:CachedImage.LoadingPlaceholder>
                            <ffimageloading:CachedImage.ErrorPlaceholder>
                                <OnPlatform   
                                x:TypeArguments="ImageSource"
                                iOS="noimage"
                                Android="noimage" />
                            </ffimageloading:CachedImage.ErrorPlaceholder>
                        </ffimageloading:CachedImage>
                    </Grid>
    </ContentPage>
    

    ViewModel(使用 prism )

    public class MyClassViewModel : BindableBase, INavigationAware
    {
       public MyClassViewModel()
       {
       }
    
        private string _thumbPath;
    
        public PerfilPetDto ThumbPath
        {
            get
            {
                return "https://www.google.com.br/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png";
            }
            set
            {
                _thumbPath = value;
                RaisePropertyChanged(nameof(ThumbPath));
            }
        }
    }
    
    1 回复  |  直到 8 年前
        1
  •  6
  •   Steve Chadbourne    8 年前

    首先要做的是将手势识别器添加到缓存的图像中

    <ffimageloading:CachedImage.GestureRecognizers>
        <TapGestureRecognizer Command="{Binding ViewImageCommand}" />
    </ffimageloading:CachedImage.GestureRecognizers>
    

    这将使用命令绑定到视图模型中的命令

    private Command _viewImageCommand;
    public Command ViewImageCommand => _viewImageCommand ?? (_viewImageCommand = new Command(async () => await ViewImage()));
    
    private async Task ViewImage()
    {
        await CoreMethods.PushPageModel<FullScreenImagePageModel>(imageName, false);
    }
    

    这将推动另一个页面以全屏显示图像。

    我使用FreshMvvm将图像的名称传递给全屏图像视图模型。

    推荐文章