繁体   English   中英

启动应用程序时 Xamarin 清空 SwipeCardView

[英]Xamarin empty SwipeCardView when launching app

我正在尝试制作类似 Tinder 的应用程序。 我找到了一个 nuget 包 (MLToolkit.Forms.SwipeCardView) 来创建可滑动的卡片。 我尝试使用假数据设置 UserProfile 类来创建一些测试卡并查看滑动是否正常工作。

问题是,SwipeCardView 没有出现在我的应用程序中......

主页.xaml

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="TinderSwipeTest.MainPage"
             xmlns:SwipeCardView="clr-namespace:MLToolkit.Forms.SwipeCardView;assembly=MLToolkit.Forms.SwipeCardView">

    <StackLayout>
        <Frame BackgroundColor="#2196F3" Padding="24" CornerRadius="0">
            <Label Text="Welcome to Xamarin.Forms!" HorizontalTextAlignment="Center" TextColor="White" FontSize="36"/>
        </Frame>
        <SwipeCardView:SwipeCardView
            x:Name="SwipeView1" ItemsSource="{Binding Profiles}" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"
            Padding="10" SupportedDraggingDirections="Left,Right,Up">
            <SwipeCardView:SwipeCardView.ItemTemplate>
                <DataTemplate>
                    <StackLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
                        <Frame CornerRadius="10" Padding="8" HorizontalOptions="FillAndExpand" VerticalOptions="EndAndExpand">
                            <AbsoluteLayout>
                                <Image Source="{Binding Photo}" Aspect="AspectFill" AbsoluteLayout.LayoutBounds="0.5,0.5,1,1" AbsoluteLayout.LayoutFlags="All"></Image>
                            </AbsoluteLayout>
                        </Frame>
                    </StackLayout>
                </DataTemplate>
            </SwipeCardView:SwipeCardView.ItemTemplate>
        </SwipeCardView:SwipeCardView>
    </StackLayout>

</ContentPage>

主页.xaml.cs

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;

namespace TinderSwipeTest
{
    public partial class MainPage : ContentPage
    {
        public ObservableCollection<UserProfile> _Profile = new ObservableCollection<UserProfile>();
        public MainPage()
        {
            InitializeComponent();
            CardBinding();
            BindingContext = this;
        }

        public void CardBinding()
        {
            _Profile.Add(new UserProfile() { Name = "Joconde", Age = "115", Photo = "joconde.jpg" });
            _Profile.Add(new UserProfile() { Name = "Joconde2", Age = "115", Photo = "joconde.jpg" });
            _Profile.Add(new UserProfile() { Name = "Joconde3", Age = "115", Photo = "joconde.jpg" });
            _Profile.Add(new UserProfile() { Name = "Joconde4", Age = "115", Photo = "joconde.jpg" });
            _Profile.Add(new UserProfile() { Name = "Joconde5", Age = "115", Photo = "joconde.jpg" });
            _Profile.Add(new UserProfile() { Name = "Joconde6", Age = "115", Photo = "joconde.jpg" });
            _Profile.Add(new UserProfile() { Name = "Joconde7", Age = "115", Photo = "joconde.jpg" });
            _Profile.Add(new UserProfile() { Name = "Joconde8", Age = "115", Photo = "joconde.jpg" });
            _Profile.Add(new UserProfile() { Name = "Joconde9", Age = "115", Photo = "joconde.jpg" });
            _Profile.Add(new UserProfile() { Name = "Joconde10", Age = "115", Photo = "joconde.jpg" });
            _Profile.Add(new UserProfile() { Name = "Joconde11", Age = "115", Photo = "joconde.jpg" });
            _Profile.Add(new UserProfile() { Name = "Joconde12", Age = "115", Photo = "joconde.jpg" });
            _Profile.Add(new UserProfile() { Name = "Joconde13", Age = "115", Photo = "joconde.jpg" });
        }

        public ObservableCollection<UserProfile> Profile
        {
            get => _Profile;
            set
            {
                _Profile = value;
            }
        }

        public class UserProfile
        {
            public string Name { get; set; }
            public string Age { get; set; }
            public string Photo { get; set; }
        }
    }
}

来自共享代码: ItemsSource="{Binding Profiles}" ,因此您需要BindingContextProfiles属性。

您可以修改代码如下:

public ObservableCollection<UserProfile> Profiles = new ObservableCollection<UserProfile>();
...
    public void CardBinding()
    {
        Profiles.Add(new UserProfile() { Name = "Joconde", Age = "115", Photo = "joconde.jpg" });
        Profiles.Add(new UserProfile() { Name = "Joconde2", Age = "115", Photo = "joconde.jpg" });
        Profile.Add(new UserProfile() { Name = "Joconde3", Age = "115", Photo = "joconde.jpg" });
        Profiles.Add(new UserProfile() { Name = "Joconde4", Age = "115", Photo = "joconde.jpg" });
        Profiles.Add(new UserProfile() { Name = "Joconde5", Age = "115", Photo = "joconde.jpg" });
        Profiles.Add(new UserProfile() { Name = "Joconde6", Age = "115", Photo = "joconde.jpg" });
        Profiles.Add(new UserProfile() { Name = "Joconde7", Age = "115", Photo = "joconde.jpg" });
        Profiles.Add(new UserProfile() { Name = "Joconde8", Age = "115", Photo = "joconde.jpg" });
        Profiles.Add(new UserProfile() { Name = "Joconde9", Age = "115", Photo = "joconde.jpg" });
        Profiles.Add(new UserProfile() { Name = "Joconde10", Age = "115", Photo = "joconde.jpg" });
        Profiles.Add(new UserProfile() { Name = "Joconde11", Age = "115", Photo = "joconde.jpg" });
        Profiles.Add(new UserProfile() { Name = "Joconde12", Age = "115", Photo = "joconde.jpg" });
        Profiles.Add(new UserProfile() { Name = "Joconde13", Age = "115", Photo = "joconde.jpg" });
    }
...

我只是使用了“{Binding Profiles}”而不是“{Binding Profile}”我的坏

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM