Xamarin表单:轻触Listview图像全屏显示图像

时间:2018-01-04 03:29:00

标签: xamarin.forms

逗人,

我的listview中有一张图片。对于该图像,我设置了Aspect =“AspectFill”。

点击该图片,我需要全屏查看图片,背景会模糊不清。

我的要求就像是WhatsApp dp的最初点击。在WhatsApp中,在WhatsApp联系人的顶部显示dp全屏图像。

提前致谢。

3 个答案:

答案 0 :(得分:1)

使用Rg.Plugins.Popup

完成此功能

question

答案 1 :(得分:0)

将Listview放在网格中

将图像放在同一网格中,并将IsVisible设置为false。使其全宽和高。

点击列表视图项目,将图像源设置为点击列表视图项目图像,并将IsVisible设置为true。

您可以将图像嵌套在具有白色不透明背景的stacklayout中,以实现模糊效果。

为图像添加点击处理程序以再次隐藏它。

答案 2 :(得分:0)

你在这里回答

             

      <RowDefinition Height="*"/>
     </Grid.RowDefinitions>       
     <ListView x:Name="lstView" BackgroundColor="White" VerticalOptions="FillAndExpand" ItemsSource="{Binding ImageList}" ItemSelected="Handle_ItemSelected" >
                <ListView.ItemTemplate>
                    <DataTemplate>
                <ViewCell>
    <StackLayout VerticalOptions="FillAndExpand" Orientation="Horizontal" Padding="10">

                  <Image Aspect="AspectFill"
                         HeightRequest ="75" WidthRequest="75"
                         Source="{Binding ImageName}" />


                </StackLayout>
              </ViewCell>

                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
    <Image Grid.RowSpan="1" Source="{Binding}" x:Name="grdImage" IsVisible="false"/>
</Grid>

    public POCPage()
    {
        InitializeComponent();
        ImageList = new ObservableCollection<Images>
        {
            new Images { ImageName = "first", ImageId = "1" },
            new Images { ImageName = "Four", ImageId = "2" },
            new Images { ImageName = "Second", ImageId = "3" },
            new Images { ImageName = "Third", ImageId = "4" }
        };

        lstView.ItemsSource = ImageList;
    }


    void Handle_ItemSelected(object sender, Xamarin.Forms.SelectedItemChangedEventArgs e)
    {
        grdImage.IsVisible = true;
        lstView.IsVisible = false;
        var item = e.SelectedItem as Images;
        grdImage.Source = ImageSource.FromFile(item.ImageName);
    }

    private ObservableCollection<Images> imageList;

    public ObservableCollection<Images> ImageList
    {
        get
        {
            return imageList;
        }
        set
        {
            imageList = value;

        }
    }
}

public class Images
{
    public string ImageName
    {
        get;
        set;
    }

    public string ImageId
    {
        get;
        set;
    }