Code Monkey home page Code Monkey logo

twintechsformslib's Introduction

TwinTechs Xamarin Forms Library

This project contains useful helpers, services and controls which aid development of Xamarin Forms apps.

We make these freely available to the community under the apache License [http://www.apache.org/licenses/LICENSE-2.0.html]. Use it how you like.

We are in the process of adding more controls to this library, and will shortly create an official nuget package.

This Lirbary is the result of a series of blog posts I wrote describing how to push Xamarin Forms to it's limits: http://blog.twintechs.com/advanced-xamarin-forms-techniques-for-flexible-and-performant-cross-platform-apps-part-1.-xamarin-forms-how-far-can-we-push-it

##Xamarin Forms We will contribute some of these controls to the xamarin forms project once we do more testing/development and have more time to integrate them. We figured it'd be great to get these out there for others to use, and build their ideas upon.

##Caveat emptor (buyer beware) This library is in an alpha stage. Do not use in a production environment unless you know what you are doing, know what these controls are doing, and have budget to investigate and contribute to resolving any issues which may arise.

#Controls

FastCell

Overview

This is a ViewCell replacement base class which has some optimizaitons which drastically improve performance of listview cells, when using xaml.

The problem

Currently xamarin forms creates a view cell for each item in a list, even though the underlying template will only use as many cells as are visible on the screen). If your view cell is based on xaml, this means your constructor will call InitializeComponent as many times as you have items. This is what causes the jumping and stuttering when you use Xaml.

The solution

IMAGE ALT TEXT HERE

The optimizaitons work by only initilaizing the xamarin cells for the actual cells which are used. The code changes required to achieve this are minimial.

iOS example http://youtu.be/V3Djg3bZN1A

And exanded android example here :http://youtu.be/6yzXOGG2Rm0

How to use

Extend FastCell, and initialize your cellat the appropriate place

Remove your expensive contstructor from your xaml page and replace with an implementation of the abstract method InitializeCell:

	protected override void InitializeCell ()
	{
		InitializeComponent ();
	}

Note, you can also do other initialization here if you need.

Set data your cell up with the data in the BindingContext

We don't use bindings in our cells, we instead opt to set the data values by hand, when the binding context changes.

Just override the abstract SetupCell method, and you're good to go:

protected override void SetupCell (bool isRecycled)
	{
		var mediaItem = BindingContext as MediaItem;
		if (mediaItem != null) {
			UserThumbnailView.ImageUrl = mediaItem.ImagePath ?? "";
			ImageView.ImageUrl = mediaItem.ThumbnailImagePath ?? "";
			NameLabel.Text = mediaItem.Name;
			DescriptionLabel.Text = mediaItem.Description;
		}
	}

Clean up the cache when you finish with your list

When you want to destory your list, destroy the list cache objects by calling :

FastCellCache.FlushAllCaches ();

Manage references to the FastCellCache instance (which is a singleton) by whatever means you like (injection, static helper method, etc).

i.e. In the example core project, you will find the following class:

	public static class AppHelper
	{
		public static IFastCellCache FastCellCache { get; set; }
	}

The reference is set in the appdelegate/main activity, and used in on dissapear.

We will improve the cache situation over the next few weeks, as we do more work on android projects.

The accompanying blog post for the FastImage and FastViewCell is here: http://blog.twintechs.com/how-to-achieve-native-list-performance-with-xamarin-forms-listview

Implementation notes

The following work:

  • Xaml cells,
  • xaml bindings,
  • Grouped cells,
  • Android and iOS implementations (for android you need xamarin forms 1.4.3 (pre2 at time of writing), due to a xamarin forms bug (you'll get crashes otherwise)).

Variable height rows do not work, and will not work unless Xamarin provide us some API hooks. If you want to see this performance on xaml cells, with variable heights, please make your voice heard here : https://bugzilla.xamarin.com/show_bug.cgi?id=29820

The implementations have not been tested for memory leaks yet!

FastImage

A control which provides ram/disk caching of network loaded images, to give great performance improvements in lists and for image use in genera.

Implementation notes

Usage

UserThumbnailView.ImageUrl = mediaItem.ImagePath ?? "";

FastGridCell

This is an optimization to XLabs GridView implmentation which greatly improves performance. For convenience we have included the GridView sources. You can use them as is, or patch your own version of XLabs, or copy them into your project.

IMAGE ALT TEXT HERE

Usage of the GridView is the same as in XLabs, with a few additional properties

  • IsHorizontal - sets the grid to horizontal mode
  • ContentPadding(Top|Left|Right|Bottom) - to set content padding,
  • Reload() - relaods the grid
  • ScrollToItemAtIndex(index,animated) - to scroll to the given item,
  • IsContentCentered - automatically adjusts contentPadding to center items in your grid,
  • CenterAsFilledRow - if set to false, then the content will always be "truly" centered, so if you have just one item, it will appear in the middle of your grid, as opposed to padded to fit into where it would if you had sufficient items to fill a row.

The FastGridCell is described fully in our blog post : http://blog.twintechs.com/advanced-xamarin-forms-techniques-for-flexible-and-performant-cross-platform-apps-part-3:

GESTURES

We have a suite of cross platform gestures (iOS and Android at time of writing)).

Ive blogged about them here and will provide more documentation shortly (probably in the form of a video - tired of tippy tapping).

In a nut-shell, we've opted to use compositional style gestures that build on Xamarin's own mechanism. This makes for a natural and unobtrusive api.

No subclassing or special views are required, and the only additional step to using them, is on Android, whereby you need to override one method in your main activity. That step is optional, only if you want advanced gesture touch coordination (which you probably will, once you see what it does ;)

If you can't work out how to use them from the samples though, well.. you probably shouldn't be trying to use them anyhow :)

I will add they are WIP and that some of the android features are experimental. You can expect crashes and memory leaks. However, if you are brave enough to give them ago, we are actively supporting and developing them and will get onto your bugs in a speedy fashion. We will also lovingly aceept your pull requests :)

SvgImage (fork)

A Xamarin.Forms SvgImage variant that offers stretchable 9-slice support of SVG image rendering. For usage, background information, and more, check out the dedicated TwinTechs.SvgImage readme.

twintechsformslib's People

Contributors

georgejecook avatar patridge avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

twintechsformslib's Issues

FastCell ContextAction

We are trying to switch to your Fastcell implementation. So far we are pretty impressed.
I did stumble over Context Actions so far. Taken from a working ListView implementation, they don't show up under iOS (Android not tested yet)

I hope it might be a "simple" change in the renderer. Could you point me in the right direction ?

<?xml version="1.0" encoding="UTF-8"?>
<controls:FastCell
    xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:controls="clr-namespace:TwinTechs.Controls;assembly=TwinTechsForms"
    xmlns:i18n="clr-namespace:I18n.Extension;assembly=I18n"
    x:Class="Controls.PasswordSafeCell">

    <ViewCell.ContextActions>
        <MenuItem   Command="{Binding Source={x:Reference passwordsListView}, Path=BindingContext.CopyPasswordCommand}}" 
                    CommandParameter="{Binding .}" Text="{i18n:TranslateExtension Text=LABEL_COPY}" />
        <MenuItem   Command="{Binding Source={x:Reference passwordsListView}, Path=BindingContext.EditPasswordCommand}}" 
                    CommandParameter="{Binding .}" Text="{i18n:TranslateExtension Text=LABEL_EDIT}" />
        <MenuItem   Command="{Binding Source={x:Reference passwordsListView}, Path=BindingContext.DeletePasswordCommand}}" 
                    CommandParameter="{Binding .}" Text="{i18n:TranslateExtension Text=LABEL_DELETE}" IsDestructive="true" />
    </ViewCell.ContextActions>
<!--    <ContentView>-->
        <StackLayout HorizontalOptions="StartAndExpand" Orientation="Horizontal">
            <StackLayout Padding="15,10,15,10" VerticalOptions="StartAndExpand" Orientation="Vertical" Spacing="0">
                <Label x:Name="LabelTitle" Text="TTT" YAlign="Center" FontSize="Medium" FontAttributes="Bold" />
                <Label x:Name="LabelUrl" Text="UUU" YAlign="Center" FontSize="Small" />
            </StackLayout>
        </StackLayout>
<!--    </ContentView>-->

</controls:FastCell>

Retain font/typeface in cell on Android

My cells use a custom font and render nicely in the beginning, but as I scroll the scrolling gets really choppy. I am using a font cache (Xlabs'), but it seems the cells erase my font each time. Any suggestions on how to speed this up?

FastCell: Cells not getting assigned the correct binding context.

The modifications I made to the sample project:

  • I added an index parameter to the MediaItem: public MediaItem (int index, ..., ..., ..)
  • In the DataProvider class' GetMediaItems() method, I pass in the index value for each media item.
  • Add a label in the ComplexFastCell XAML layout with an x:Name property of "IndexLabel"
  • Set the Text value for the IndexLabel to the index of the Media Item.

After scrolling up or down a few times, you can notice the index numbers displayed on the label are inconsistent.

http://forums.xamarin.com/discussion/comment/127912#Comment_127911

Grouped lists get jumbled on Android

I have a grouped list that is using fast cell. I have a fastcell for the GroupHeaderTemplate and one for the ItemTemplate, but as I scroll the headers and items get all mixed up. Anyone know of a way to fix this issue?

FastCell in production environment

Hello.

I am really interested in FastCell control, because I want to improve the performance in my app ListViews (too slow in Android).

But I have to say that this is for a customer project, and this code will be in production very soon.

Do you reccommend me to use it? In readme file you don't recommend to use this library for production...

Thanks!! :-)

FastCell with ObservableCollection and .Insert(0, item) is buggy

I have a ListView which is bound to an ObservableCollection. Changing the ObservableCollection works great and the ListView using FastCell updates the items correctly.

But when I'm going to add an item on the top of the ObservableCollection with:

MyObservableCollection.Insert(0, myNewItem);

the elements in the List sometimes get the same BindingContext assigned, so I have duplicates in my ListView despite having them in my ObservableCollection.

This is noticeable if you have a small List with 3-10 items in it. In bigger lists it seems to work fine.

This also happens when moving items (sorting) in the collection.

Any idea on this?

Adding the dlls to my own project gives missing resource errors

Hi,

I'm getting the likes of these errors when I include the dlls from the droid library to my own project

MyApp.Droid.Resource.Attribute does not contain a definition for layoutManager

there are 12 such errors in the designer.cs file (reverseLayout, spanCount, stackFromEnd, item_touch_helper_max_drag_scroll_per_frame, item_touch_helper_previous_elevation, RecyclerView, RecyclerView_android_orientation, RecyclerView_layoutManager, RecyclerView_reverseLayout, RecyclerView_spanCount and RecyclerView_stackFromEnd)

On Android horizontal scroll is not working

Hi, using XF 1.5.1 in Android setting the control to Horizontal, does not enable the horizontal scroll. Only once, after touching the screen in a lot of direction it started scrolling, but with the wrong tap, not an horizontal drag but with a vertical ones.

How to scale SVGs without preserving the aspect ratio

Is there a way to get the SVGs to scale properly to the set Width and Height without preserving the aspect ratio? I tried setting preserveAspectRatio="none" and a few other settings and nothing worked. I'm testing it on Android btw.

Xamarin Forms 2.0 breaks ViewExtensions

I was trying to put the PageViewContainer into a sample app and was having some issues, so I got the full project and tried to use it after updating packages to use Xamarin.Forms 2.0, but I was getting a crash trying to switch between the 3 sample pages.

The issue is in ViewExtensions.cs, the GetRenderer() method and GetRenderDelegate() delegate were previously referencing BindableObject, but have to be changed to VisualElement instead to get it back working without a crash. I figured this out after comparing the Platform.cs in the old and new libraries.

Thanks much for this example!

PageViewContainer and Back button

Hi George,

Once again, thanck for this great work, I have been playing with your PageViewContainer which work great excpet the back button of the NavigationPage, as you spotted in this bug

Did you find any work around ?
May be with your GestureRecognizer if the bug is caused by the native one as you commented ?

Axel

Cant get PageViewContainer to show anything...

So I have a PageViewContainer and then I have underneath that a TabbedPage with children Pages. Unfortunately it wont show anything at all. I set a background color to the PageViewContainer and it shows that but none of the children TabbedPages. Is there something I need to do that is special or?

        TabbedPage test = new TabbedPage();
        test.Children.Add(new Page(){Title="Test1", BackgroundColor = Color.Green});
        test.Children.Add(new Page(){Title="Test2", BackgroundColor = Color.Green});
        test.Children.Add(new Page(){Title="Test3", BackgroundColor = Color.Green});
        TabElement.Content = test;

TabElement is my PageViewContainer.

Thanks!

PageViewContainer crash under ios 10.2

Thanks for the great work!
but... I download the latest code & run it under ios 10.2 simulator
(before & after update xamarin forms to 2.3.3.180)
after I touch simple examples 's first button...
I get the exception: 'method arguments are icompatible'

thanks very much!

Bug using ListView Group Header with FastCell

I have a ListView with items separated by groups with a HeaderTemplate : FastCell.

The problem

When do scrolling up/down some times, the items are not grouped and (some) are disappearing.
Seems that when the ViewCell is put at recycle bin, and when turns back to the ListView, it is put at the wrong location ( wrong group).

I'll upload a video when possible.
So, is that really a bug, or am i doing wrongly?

FastCell with SwipeGesture not working

Hi,

I implemented your FastCell solution which is working very good.
On the cell I use SwipeGestureRecognizer which is working --> but only sometimes.

My ViewCell has one image, one label, one button and one edittext.
I tried several ways:

  1. add swipe gesture to all elements inclusive viewcell content
  2. add swipe gesture only to image
  3. add swipe gesture only to viewcell content

The results are quite bad. So the event is never triggered (only 1 out of 20-30)

I also recognized your comment SwipeListCell.xaml.cs:
//TODO - fastcell has a bug in it which causes the renderer not to be set on some of the top level view! need to work out why.

Maybe its related?

Thank you in advance

Best Regards

IOS ItemAppearing Bug

in ios i need use ItemAppearing event to load new data, but in your FastCellRenderer you overwrite
GetCell method den't use base.GetCell So ItemAppearing event den't be execute; but i use The other way

anothor Bug I use ObservableCollection to load my data when last listview item appearใ€‚if i sliding slowly it work but sliding fastly app crash.

Images not loading on Android

Images are not showing up for me on Android. I keep getting the error SkImageDecoder::Factory returned null. Anyone have any ideas how to fix this?

implement IBoxedCell pt2

Accidentally closed issue: #31

Sorry!

Original issue:

"Hello,

I'm implementing this library on both Android and iOS (same solution/project). It works fine (super smooth!) in my Android project, but on iOS, my list doesn't load (fast)images and whenever I scroll, the app will crash with this message:

System.InvalidOperationException: Implement IBoxedCell on cell renderer: TwinTechs.Controls.NativeCell, TwinTechsLib.iOS, Version=1.0.5858.22559, Culture=neutral, PublicKeyToken=null

Google isn't helping me at all (it's as if IBoxedCell doesn't exist at all). It's working in the sample project, but it will crash everytime I try to run it on iOS."

Your reply:

"Can you give me the code for your cell and list please?"

My reply:

"Hello,

Thank you for your reply. I have two implementations of your fastcell. I'm using it for the complex fastcell I built, however it's easier to explain with the simplecell, since it's the same problem. Here's the xaml

<?xml version="1.0" encoding="utf-8" ?>
<controls1:FastCell xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:cells="clr-namespace:floricodeapp.App.Views.Cells;assembly=floricodeapp.App"
             xmlns:controls1="clr-namespace:TwinTechs.Controls;assembly=TwinTechsForms"
             x:Class="floricodeapp.App.Views.Cells.MyFastCell">
    <cells:IndexedStackLayout x:Name="Container" VerticalOptions="FillAndExpand" Orientation="Horizontal" Spacing="5" Padding="0" HorizontalOptions="FillAndExpand">
    <controls1:FastImage Aspect="AspectFill" x:Name="Image"/>
    <StackLayout Padding="2" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
      <Label x:Name ="Omschrijving" VerticalOptions="Start" HorizontalOptions="StartAndExpand" FontAttributes="Bold" LineBreakMode="TailTruncation" />
      <StackLayout Orientation="Horizontal" VerticalOptions="EndAndExpand" Spacing="0">
        <Label x:Name="VbnCode" />
        <BoxView WidthRequest="8" HeightRequest="1" />
        <Image Source="rhs_kleur" HorizontalOptions="Start" VerticalOptions="Center" x:Name="Rhs1" />
        <Label x:Name="RhsKleur1" />
        <BoxView WidthRequest="8" HeightRequest="1" />
        <Image Source="rhs_kleur" HorizontalOptions="Start" VerticalOptions="Center" x:Name="Rhs2" />
        <Label x:Name="RhsKleur2" />
      </StackLayout>
    </StackLayout>
        <Image x:Name="FavImage" Source="fave.png" HorizontalOptions="EndAndExpand" VerticalOptions="Center" Aspect="AspectFit" />
        <Image x:Name="IsNew" HorizontalOptions="End" VerticalOptions="Start" Source="nieuw.png"/>
        </cells:IndexedStackLayout>
</controls1:FastCell>

The accompanying C#:

class IndexedStackLayout : StackLayout
    {
        public int Index { get; set; }
    }

    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class MyFastCell : FastCell
    {
        protected override void InitializeCell()
        {
            InitializeComponent();

            var item = BindingContext as SearchProductModel;
            var gesture = new TapGestureRecognizer { CommandParameter = item.ParentPage };
            gesture.Tapped += GestureOnTapped;
            Container.GestureRecognizers.Add(gesture);
        }

        protected override void SetupCell(bool isRecycled)
        {
            var item = BindingContext as SearchProductModel;

            if (item != null)
            {
                Container.Index = item.Index;
                Height = Constants.ThumbRenderSize;
                Image.ImageUrl = string.Format(Constants.ThumbnailUrl, item.VbnCode) ?? "";

                if (Device.OS == TargetPlatform.Android)
                {
                    Image.VerticalOptions = LayoutOptions.Center;
                    Image.HorizontalOptions = LayoutOptions.Start;
                    Image.HeightRequest = Constants.ThumbRenderSize;
                    Image.WidthRequest = Constants.ThumbRenderSize;
                }

                Omschrijving.Text= item.Omschrijving;
                Omschrijving.FontSize = Device.GetNamedSize(NamedSize.Small, typeof (Label));

                IsNew.Opacity = item.Opacity;

                Rhs1.BackgroundColor = item.RhsKleur1Color;
                Rhs1.IsVisible = item.Rhs1Visible;

                Rhs2.BackgroundColor = item.RhsKleur2Color;
                Rhs2.IsVisible = item.Rhs2Visible;

                RhsKleur1.TextColor = Constants.DetailTextColor;
                RhsKleur1.Text = item.RhsKleur1;
                RhsKleur2.TextColor = Constants.DetailTextColor;
                RhsKleur2.Text = item.RhsKleur2;

                FavImage.IsVisible = item.IsFavorite;

                VbnCode.Text = item.VbnCodeWithPoundSign;
                VbnCode.TextColor = Constants.DetailTextColor;
            }
        }

        private void GestureOnTapped(object sender, EventArgs eventArgs)
        {
            var s = (IndexedStackLayout)sender;
            var parent = (PeterListView)((TappedEventArgs)eventArgs).Parameter;

            parent.Navigation.PushAsync(new ProductPage(parent.Producten.Select(p => p.VbnCode).ToList(), s.Index, parent.TotalCount, parent.ParentPage, this));
        }
    }

The Viewmodel:

    public class SearchProductKleurModel : BaseModel
    {
        public int VbnCode { get; set; }
        public string RhsCode { get; set; }
        public int R { get; set; }
        public int G { get; set; }
        public int B { get; set; }
    }

    public class SearchProductModel : BaseModel
    {
        public byte[] Icon;

        public PeterListView ParentPage { get; set; }
        public int Index { get; set; }

        private List<SearchProductKleurModel> _kleuren;
        public List<SearchProductKleurModel> Kleuren
        {
            get
            {
                if (_kleuren == null)
                {
                    _kleuren = new List<SearchProductKleurModel>();
                    if (!string.IsNullOrEmpty(RhsKleur))
                    {
                        var arr = RhsKleur.Split(new []{'~'},StringSplitOptions.RemoveEmptyEntries);

                        foreach (var details in arr)
                        {
                            var detail = details.Split('_');
                            int r, g, b;
                            r = g = b = 255;
                            try
                            {
                                if (detail.Count() > 1)
                                {
                                    b = Convert.ToInt32(detail[3]);
                                    g = Convert.ToInt32(detail[2]);
                                    r = Convert.ToInt32(detail[1]);
                                }
                                _kleuren.Add(new SearchProductKleurModel
                                {
                                    VbnCode = VbnCode,
                                    B = b,
                                    G = g,
                                    R = r,
                                    RhsCode = detail[0]
                                });
                            }
                            catch (Exception ex)
                            {
                                //throw ex;
                            }
                        }
                    }

                }
                return _kleuren;
            }
        }

        public Color RhsKleur1Color
        {
            get
            {
                var s = Color.White;
                if (Kleuren.Any())
                {
                    var k = Kleuren.First();
                    s = Color.FromRgb(k.R, k.G, k.B);
                }
                return s;
            }
        }

        public Color RhsKleur2Color
        {
            get
            {
                var s = Color.White;
                if (Kleuren.Count > 1)
                {
                    var k = Kleuren.ElementAt(1);
                    s = Color.FromRgb(k.R, k.G, k.B);
                }
                return s;
            }
        }

        public string RhsKleur1
        {
            get
            {
                var s = string.Empty;
                if (Kleuren.Any())
                {
                    s = Kleuren.First().RhsCode;
                }
                return s;
            }
        }

        public string RhsKleur2
        {
            get
            {
                var s = string.Empty;
                if (Kleuren.Count > 1)
                {
                    s = Kleuren.ElementAt(1).RhsCode;
                }
                return s;
            }
        }

        private string _omschrijving;
        public string Omschrijving
        {
            get { return _omschrijving; }
            set
            {
                _omschrijving = value;
                OnPropertyChanged();
            }
        }

        private int _vbnCode;
        public int VbnCode
        {
            get { return _vbnCode; }
            set
            {
                _vbnCode = value;
                OnPropertyChanged();
            }
        }

        public string VbnCodeWithPoundSign
        {
            get { return "#" + _vbnCode; }
        }

        private string _rhskleur;
        public string RhsKleur
        {
            get { return _rhskleur; }
            set
            {
                _rhskleur = value;
                OnPropertyChanged();
            }
        }

        private bool _isnieuw;
        public bool IsNieuw
        {
            get { return _isnieuw; }
            set
            {
                _isnieuw = value;
                OnPropertyChanged();
            }
        }

        public string Thumbnail { get; set; }
        private IWebServiceHelper _wsHelper;
        public ImageSource ImageSource
        {
            get
            {
                return new UriImageSource{ CachingEnabled = false, Uri=new Uri(Thumbnail)};
//                return ImageSource.FromUri(new Uri(Thumbnail));
            }
        }

        public int Opacity
        {
            get { return IsNieuw ? 1 : 0; }
        }

        public bool Rhs1Visible
        {
            get { return Kleuren.Any(); }
        }

        public bool Rhs2Visible
        {
            get { return Kleuren.Any() && Kleuren.Count > 1; }
        }

        private bool _isFavorite;
        public bool IsFavorite
        {
            get { return _isFavorite; }
            set
            {
                _isFavorite = value;
                OnPropertyChanged();
            }
        }

        public override string ToString()
        {
            return Omschrijving;
        }
    }

The listview is simple custom control I made to enable infinite scrolling. It's simple and tiny, but does the job as well as examples I found elsewhere with a lot more code and complexity:

 public class InfiniteListView<T> : ListView
    {
        public bool CurrentlyAdding;

        public InfiniteListView()
            : base(ListViewCachingStrategy.RecycleElement)
        {
            ItemAppearing += (sender, args) =>
            {
                var s = ItemsSource.Cast<T>().ToList();
                if (CurrentlyAdding || !s.Any()) 
                    return;

                if (s.IndexOf((T)args.Item) == s.Count - 1)
                    OnEndReached(null);
            };
        }

        public event EventHandler EndReached;
        private void OnEndReached(EventArgs e)
        {
            var handler = EndReached;
            if (handler != null)
                handler(this, e);
        }

        public void SelectItem(int index)
        {
            try
            {
                ScrollTo(ItemsSource.Cast<T>().ElementAt(index), ScrollToPosition.Center, false);
            }
            catch
            {
            }
        }
    }

The listview isn't directly place on a page, but rather in a contentview, embedded on a page:

  public void LoadList()
        {
            InfiniteList.Clear();
            InfiniteList = new PeterListView(this, this is FavorietenPage);
            _listHolder.Content = InfiniteList;
            InfiniteList.Reset();
        }

The contentview which holds the list is a xaml-file. The list is embedded like this:

<controls:InfiniteListView x:Name="listView" x:TypeArguments="model:SearchProductModel" />

The list is bound to data with an Init()-method:

private void Init(HomePage parentPage)
        {
            ParentPage = parentPage;
            Producten = new ObservableCollection<SearchProductModel>();
            LoadData();
            if(Device.OS == TargetPlatform.Android)
                listView.ItemTemplate = new DataTemplate(typeof(MyFastCell));
            else
                listView.ItemTemplate = new DataTemplate(typeof(MyCell));

            listView.ItemsSource = Producten;
            listView.EndReached += (sender, args) =>
            {
                if (Producten.Count < TotalCount)
                {
                    listView.CurrentlyAdding = true;
                    AddProducts(Producten.Count);
                }
            };
            listView.ItemTapped  += ListViewOnItemTapped;
            listView.ItemSelected += (sender, args) => listView.SelectedItem = null; 

            BindingContext = this;
        }

The LoadData()- and AddProducts()-methods simply add data to the ObservableCollection.

public ObservableCollection<SearchProductModel> Producten { get; set; }

I hope this is enough information. Now I'm forced to utilize the regular Viewcells on iOS, making the Android-version of the app perform much better. (iOS takes 3-5 seconds to load a new dataset from the observablecollection)"

SvgImage Exception when setting SvgPath Property late

I've run into exceptions when instantiating an SvgImage as follows:

sampleButton = new SvgImage
{
    IsVisible = false,
    SvgAssembly = typeof(App).GetTypeInfo().Assembly,
    HeightRequest = 44,
    WidthRequest = 44,
};

And, at a later point in time:

sampleButton.IsVisible = true;
sampleButton.SvgPath = "MyPath.MyImage.svg";

The SvgImage.RenderSvgToCanvas() method is invoked even though the SvgImage is initially invisible. The method fails because LoadedGraphic is null:

public IImageCanvas RenderSvgToCanvas (...)
{
    var originalSvgSize = LoadedGraphic.Size; // Exception because LoadedGraphic = null
    var finalCanvas = createPlatformImageCanvas (outputSize, finalScale);
    ...
}

A possible solution might be:

public IImageCanvas RenderSvgToCanvas (...)
{
    var finalCanvas = createPlatformImageCanvas(outputSize, finalScale);
    if (LoadedGraphic == null)
    {
        return finalCanvas;
    }
    var originalSvgSize = LoadedGraphic.Size;
    ...
}

Grid No work in ScrollView

If the grid put in scrollview, then when there is a scroll. grid stops working.
ะ•ะณะพ ะฟั€ะพัั‚ะพ ะฝะต ะฒะธะดะฝะพ, ะฐ ัะฐะผะพ ะฟั€ะธะปะพะถะตะฝะธะต ะทะฐะฒะธัะฐะตั‚
Samples
GridViewXamlPerformance grid = new GridViewXamlPerformance();
Button btnEnter = new Button { Text = "ะŸะพะบะฐะทะฐั‚ัŒ ัะปะตะผะตะฝั‚ั‹" };
btnEnter.Clicked += (sender, e) => { grid.ShowItems(); };

        MainPage = new ContentPage {
            Content = new ScrollView {
                VerticalOptions = LayoutOptions.FillAndExpand,
                Content = new StackLayout {
                    VerticalOptions = LayoutOptions.FillAndExpand,
                    Spacing = 0,
                    Children = {
                        btnEnter,
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        new Label {Text = "text" },
                        grid
                    }
                }
            }
        };

FastImage low quality

Hi
Is there a way to improve the quality of the images on the FASTIMAGE component? FastImage works really fast but the quality of the image is very low in comparison with xamarin ImageView.

here are to sample images, take a look to the first image (the image on top)
this is xamarin imageview

http://content.screencast.com/users/egarim/folders/Jing/media/72483f38-f30e-4085-a94f-0ecae605d627/XamarinImageView.png

this is fastimage
http://content.screencast.com/users/egarim/folders/Jing/media/f829c308-f322-40c3-9f2e-d4def531e604/FastImage.png

Cell virtualization does not work when the ListView is inside a ScrollView

For my project, my ListView lives inside a ScrollView (this have to be the case because I am using a CarouselView for the feature of swippable tab), I find that if I put a ScrollView around the ListView, the main performance gain - visualization doesn't work anymore. Could you please fix this problem because that's the only trouble for me right now. I'll even pay for the fix. Sky is the limit, up to $99, :)

Force close when running FastCell Examples

Hello george and thanks for the good job.
When i run FastCell Example i got a force close in android.
Specificlly when running complex fastcell i got a force close:

06-09 13:20:32.796 I/MonoDroid( 1451): UNHANDLED EXCEPTION:
06-09 13:20:32.796 I/MonoDroid( 1451): System.NullReferenceException: Object reference not set to an instance of an object
06-09 13:20:32.796 I/MonoDroid( 1451): at Xamarin.Forms.Platform.Android.Platform.GetRenderer (Xamarin.Forms.BindableObject) <IL 0x00006, 0x0002d>
06-09 13:20:32.796 I/MonoDroid( 1451): at Xamarin.Forms.Platform.Android.ListViewAdapter.GetView (int,Android.Views.View,Android.Views.ViewGroup) <IL 0x00249, 0x00dfb>
06-09 13:20:32.796 I/MonoDroid( 1451): at Android.Widget.BaseAdapter.n_GetView_ILandroid_view_View_Landroid_view_ViewGroup_ (intptr,intptr,int,intptr,intptr) [0x0001a] in /Users/builder/data/lanes/monodroid-mavericks-monodroid-5.1-series/d419c934/source/monodroid/src/Mono.Android/platforms/android-21/src/generated/Android.Widget.BaseAdapter.cs:509
06-09 13:20:32.796 I/MonoDroid( 1451): at (wrapper dynamic-method) object.62d82a1e-955d-4c59-b503-2617c412b9b0 (intptr,intptr,int,intptr,intptr) <IL 0x00023, 0x00047>
06-09 13:20:32.804 I/dalvikvm( 1451): Could not find method java.lang.Throwable., referenced from method md52ce486a14f4bcd95899665e9d932190b.JavaProxyThrowable.
06-09 13:20:32.804 W/dalvikvm( 1451): VFY: unable to resolve direct method 9507: Ljava/lang/Throwable;. (Ljava/lang/String;Ljava/lang/Throwable;ZZ)V
06-09 13:20:32.804 D/dalvikvm( 1451): VFY: replacing opcode 0x70 at 0x0000
06-09 13:20:32.804 D/AndroidRuntime( 1451): Shutting down VM
06-09 13:20:32.804 W/dalvikvm( 1451): threadid=1: thread exiting with uncaught exception (group=0xa4c0a648)
An unhandled exception occured.

06-09 13:20:37.292 D/dalvikvm( 1451): GC_CONCURRENT freed 453K, 6% free 10498K/11084K, paused 68ms+0ms, total 72ms
06-09 13:20:37.292 D/dalvikvm( 1451): WAIT_FOR_CONCURRENT_GC blocked 1ms
06-09 13:20:37.292 I/dalvikvm-heap( 1451): Grow heap (frag case) to 10.473MB for 143392-byte allocation
06-09 13:20:37.292 E/AndroidRuntime( 1451): FATAL EXCEPTION: main
06-09 13:20:37.292 E/AndroidRuntime( 1451): java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
06-09 13:20:37.292 E/AndroidRuntime( 1451): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
06-09 13:20:37.292 E/AndroidRuntime( 1451): at dalvik.system.NativeStart.main(Native Method)
06-09 13:20:37.292 E/AndroidRuntime( 1451): Caused by: java.lang.reflect.InvocationTargetException
06-09 13:20:37.292 E/AndroidRuntime( 1451): at java.lang.reflect.Method.invokeNative(Native Method)
06-09 13:20:37.292 E/AndroidRuntime( 1451): at java.lang.reflect.Method.invoke(Method.java:525)
06-09 13:20:37.292 E/AndroidRuntime( 1451): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
06-09 13:20:37.292 E/AndroidRuntime( 1451): ... 2 more
06-09 13:20:37.292 E/AndroidRuntime( 1451): Caused by: md52ce486a14f4bcd95899665e9d932190b.JavaProxyThrowable: System.NullReferenceException: Object reference not set to an instance of an object
06-09 13:20:37.292 E/AndroidRuntime( 1451): at Xamarin.Forms.Platform.Android.Platform.GetRenderer (Xamarin.Forms.BindableObject) <IL 0x00006, 0x0002d>
06-09 13:20:37.292 E/AndroidRuntime( 1451): at Xamarin.Forms.Platform.Android.ListViewAdapter.GetView (int,Android.Views.View,Android.Views.ViewGroup) <IL 0x00249, 0x00dfb>
06-09 13:20:37.292 E/AndroidRuntime( 1451): at Android.Widget.BaseAdapter.n_GetView_ILandroid_view_View_Landroid_view_ViewGroup_ (intptr,intptr,int,intptr,intptr) [0x0001a] in /Users/builder/data/lanes/monodroid-mavericks-monodroid-5.1-series/d419c934/source/monodroid/src/Mono.Android/platforms/android-21/src/generated/Android.Widget.BaseAdapter.cs:509
06-09 13:20:37.292 E/AndroidRuntime( 1451): at (wrapper dynamic-method) object.62d82a1e-955d-4c59-b503-2617c412b9b0 (intptr,intptr,int,intptr,intptr) <IL 0x00023, 0x00047>
06-09 13:20:37.292 E/AndroidRuntime( 1451):
06-09 13:20:37.292 E/AndroidRuntime( 1451): at md5530bd51e982e6e7b340b73e88efe666e.ListViewAdapter.n_getView(Native Method)
06-09 13:20:37.292 E/AndroidRuntime( 1451): at md5530bd51e982e6e7b340b73e88efe666e.ListViewAdapter.getView(ListViewAdapter.java:40)
06-09 13:20:37.292 E/AndroidRuntime( 1451): at android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:220)
06-09 13:20:37.292 E/AndroidRuntime( 1451): at android.widget.AbsListView.obtainView(AbsListView.java:2161)
06-09 13:20:37.292 E/AndroidRuntime( 1451): at android.widget.ListView.makeAndAddView(ListView.java:1840)
06-09 13:20:37.292 E/AndroidRuntime( 1451): at android.widget.ListView.fillDown(ListView.java:675)
06-09 13:20:37.292 E/AndroidRuntime( 1451): at android.widget.ListView.fillGap(ListView.java:639)
06-09 13:20:37.292 E/AndroidRuntime( 1451): at android.widget.AbsListView.trackMotionScroll(AbsListView.java:4970)
06-09 13:20:37.292 E/AndroidRuntime( 1451): at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:4127)
06-09 13:20:37.292 E/AndroidRuntime( 1451): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
06-09 13:20:37.292 E/AndroidRuntime( 1451): at android.view.Choreographer.doCallbacks(Choreographer.java:562)
06-09 13:20:37.292 E/AndroidRuntime( 1451): at android.view.Choreographer.doFrame(Choreographer.java:531)
06-09 13:20:37.292 E/AndroidRuntime( 1451): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
06-09 13:20:37.292 E/AndroidRuntime( 1451): at android.os.Handler.handleCallback(Handler.java:730)
06-09 13:20:37.292 E/AndroidRuntime( 1451): at android.os.Handler.dispatchMessage(Handler.java:92)
06-09 13:20:37.292 E/AndroidRuntime( 1451): at android.os.Looper.loop(Looper.java:137)
06-09 13:20:37.292 E/AndroidRuntime( 1451): at android.app.ActivityThread.main(ActivityThread.java:5103)
06-09 13:20:37.292 E/AndroidRuntime( 1451): ... 5 more
06-09 13:20:37.320 D/dalvikvm( 1451): GC_FOR_ALLOC freed 14K, 6% free 10623K/11228K, paused 24ms, total 24ms
06-09 13:20:37.332 D/skia ( 1451): --- SkImageDecoder::Factory returned null
06-09 13:20:37.356 D/skia ( 1451): --- SkImageDecoder::Factory returned null
06-09 13:20:37.380 D/dalvikvm( 1451): GC_CONCURRENT freed 535K, 6% free 10593K/11268K, paused 2ms+1ms, total 8ms
06-09 13:20:37.464 D/dalvikvm( 1451): GC_CONCURRENT freed 439K, 5% free 10737K/11288K, paused 2ms+0ms, total 9ms
06-09 13:20:37.468 D/dalvikvm( 1451): WAIT_FOR_CONCURRENT_GC blocked 6ms
06-09 13:20:37.476 D/dalvikvm( 1451): WAIT_FOR_CONCURRENT_GC blocked 11ms
06-09 13:20:37.484 D/dalvikvm( 1451): GC_FOR_ALLOC freed 261K, 6% free 10844K/11428K, paused 5ms, total 5ms
Thread finished: #9
Thread finished: #9
The thread 'Unknown' (0x9) has exited with code 0 (0x0).

Problem with Entry in FastCell

Hi,
I have a problem with Entry inside a FastCell.
For example, in the project TwinTechsFormsExample, in the ComplexFastCell example, when I tap on the Entry control...the control doesn't keep the focus and so I can't write on the control.
Another strange thing is that if double tap the entry, the debug output says: "TextView does not support text selection. Action mode cancelled".

Using the standard SimpleCell, the entry works as expected.

Is this my specific problem, or is a common problem?

Luca

SVG Image does not support HorizontalOptions? (Android)

Hello,

When I try to set any HorizontalOptions on an SvgImage in a Xamarin.Forms project the images does not appear and then the application crashes.

I am setting HorizontalOptions to center the image within its view.

Exception

05-11 16:15:15.167 E/mono (13129): 05-11 16:15:15.167 E/mono (13129): Unhandled Exception: 05-11 16:15:15.167 E/mono (13129): Java.Lang.IllegalArgumentException: width and height must be > 0 05-11 16:15:15.167 E/mono (13129): at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/2923/39a97ef2/source/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143 05-11 16:15:15.167 E/mono (13129): at Java.Interop.JniEnvironment+StaticMethods.CallStaticObjectMethod (JniObjectReference type, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x00082] in /Users/builder/data/lanes/2923/7334f6a9/source/Java.Interop/src/Java.Interop/Java.Interop/JniEnvironment.g.cs:12649 05-11 16:15:15.167 E/mono (13129): at Java.Interop.JniPeerMembers+JniStaticMethods.InvokeObjectMethod (System.String encodedMember, Java.Interop.JniArgumentValue* parameters) [0x0001b] in /Users/builder/data/lanes/2923/7334f6a9/source/Java.Interop/src/Java.Interop/Java.Interop/JniPeerMembers.JniStaticMethods.cs:97 05-11 16:15:15.167 E/mono (13129): at Android.Graphics.Bitmap.CreateBitmap (Int32 width, Int32 height, Android.Graphics.Config config) [0x00054] in /Users/builder/data/lanes/2923/7334f6a9/source/monodroid/src/Mono.Android/platforms/android-23/src/generated/Android.Graphics.Bitmap.cs:670 05-11 16:15:15.167 E/mono (13129): at NGraphics.AndroidPlatform.CreateImageCanvas (Size size, Double scale, Boolean transparency) [0x00020] in /Users/fak/Dropbox/Projects/NGraphics/Platforms/NGraphics.Android/AndroidPlatform.cs:23

Getting "System.NotSupportedException: Path Operation c" when trying to load a SVG

Hello,

Thanks a lot for your library :-)

I was using Xam.Plugins.Forms.Svg before. But it often throws a get_DtdInfo error and is not stable and no issue answered. So I found your library here and tried to use it for my Project.

My Project is an existing xamarin shared Project. In order to have all resources in one place I added an additional pcl assembly. In this one I added my resources (svg).

Each time I try to use it in xaml I get an error here in your SVGImage.cs LoadSvgFromResource:
var r = new SvgReader(new StreamReader(svgStream));
raises the exception "System.NotSupportedException: Path Operation c".

All my svg Images are added to the additional assembly as embedded Content. It worked in the other SVG.
The Xaml Looks like this:
<abstractions:SvgImage BackgroundColor="#FF884444" BindingContext="{x:Reference Test}" SvgAssembly="{Binding SvgAssembly}" SvgPath="{Binding SvgImage}" HeightRequest = "50" WidthRequest = "50" Grid.Column="0"/>

Binding SVGAssembly holds the additional assembly with all resources.
SVGImage binds to a complete path to the additional assembly like "MyClient_Resources.Resources.Icons.ic_call_48px.svg".

Any idea what's wrong? I am using the free SVG Images from Google "Material-design-icons-1.0.0".

Thanks a lot!

Xamarin.Forms 2.0.1.6495 - GetRendererDelegate issues

Error thrown in ViewExtensions:

_getRendererDelegate = (GetRendererDelegate)method.CreateDelegate (typeof(GetRendererDelegate));

Throws the following exception:

2016-01-27 16:17:52.042 TwinTechsFormsExample.iOS[950:39350]
Unhandled Exception:
System.ArgumentException: method arguments are incompatible
at System.Delegate.CreateDelegate (System.Type type, System.Object firstArgument, System.Reflection.MethodInfo method, Boolean throwOnBindFailure, Boolean allowClosed) [0x0034a] in /Users/builder/data/lanes/2377/73229919/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/corlib/System/Delegate.cs:287
at System.Delegate.CreateDelegate (System.Type type, System.Reflection.MethodInfo method, Boolean throwOnBindFailure) [0x00000] in /Users/builder/data/lanes/2377/73229919/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/corlib/System/Delegate.cs:307
at System.Delegate.CreateDelegate (System.Type type, System.Reflection.MethodInfo method) [0x00000] in /Users/builder/data/lanes/2377/73229919/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/corlib/System/Delegate.cs:312
at System.Reflection.MethodInfo.CreateDelegate (System.Type delegateType) [0x00000] in /Users/builder/data/lanes/2377/73229919/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/corlib/System.Reflection/MethodInfo.cs:147
at TwinTechs.Ios.Extensions.ViewExtensions.GetRenderer (Xamarin.Forms.BindableObject bindable) [0x0004d] in /Users/fulvio/Downloads/TwinTechsFormsLib-master/TwinTechsForms/TwinTechsForms.iOS/TwinTechs/Ios/Extensions/ViewExtensions.cs:32
at TwinTechs.Ios.Controls.PageViewContainerRenderer.ChangePage (Xamarin.Forms.Page page) [0x0001a] in /Users/fulvio/Downloads/TwinTechsFormsLib-master/TwinTechsForms/TwinTechsForms.iOS/TwinTechs/Ios/Controls/PageViewContainerRenderer.cs:42
at TwinTechs.Ios.Controls.PageViewContainerRenderer.m__0 () [0x0001d] in /Users/fulvio/Downloads/TwinTechsFormsLib-master/TwinTechsForms/TwinTechsForms.iOS/TwinTechs/Ios/Controls/PageViewContainerRenderer.cs:74
at Foundation.NSAsyncActionDispatcher.Apply () [0x00000] in /Users/builder/data/lanes/2377/73229919/source/maccore/src/Foundation/NSAction.cs:163
at (wrapper managed-to-native) UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr)
at UIKit.UIApplication.Main (System.String[] args, IntPtr principal, IntPtr delegate) [0x00005] in /Users/builder/data/lanes/2377/73229919/source/maccore/src/UIKit/UIApplication.cs:77
at UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x00038] in /Users/builder/data/lanes/2377/73229919/source/maccore/src/UIKit/UIApplication.cs:61
at TwinTechsFormsExample.iOS.Application.Main (System.String[] args) [0x00008] in /Users/fulvio/Downloads/TwinTechsFormsLib-master/TwinTechsForms/iOS/Main.cs:17
2016-01-27 16:17:52.043 TwinTechsFormsExample.iOS[950:39350] Unhandled managed exception:
method arguments are incompatible (System.ArgumentException)
at System.Delegate.CreateDelegate (System.Type type, System.Object firstArgument, System.Reflection.MethodInfo method, Boolean throwOnBindFailure, Boolean allowClosed) [0x0034a] in /Users/builder/data/lanes/2377/73229919/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/corlib/System/Delegate.cs:287
at System.Delegate.CreateDelegate (System.Type type, System.Reflection.MethodInfo method, Boolean throwOnBindFailure) [0x00000] in /Users/builder/data/lanes/2377/73229919/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/corlib/System/Delegate.cs:307
at System.Delegate.CreateDelegate (System.Type type, System.Reflection.MethodInfo method) [0x00000] in /Users/builder/data/lanes/2377/73229919/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/corlib/System/Delegate.cs:312
at System.Reflection.MethodInfo.CreateDelegate (System.Type delegateType) [0x00000] in /Users/builder/data/lanes/2377/73229919/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/corlib/System.Reflection/MethodInfo.cs:147
at TwinTechs.Ios.Extensions.ViewExtensions.GetRenderer (Xamarin.Forms.BindableObject bindable) [0x0004d] in /Users/fulvio/Downloads/TwinTechsFormsLib-master/TwinTechsForms/TwinTechsForms.iOS/TwinTechs/Ios/Extensions/ViewExtensions.cs:32
at TwinTechs.Ios.Controls.PageViewContainerRenderer.ChangePage (Xamarin.Forms.Page page) [0x0001a] in /Users/fulvio/Downloads/TwinTechsFormsLib-master/TwinTechsForms/TwinTechsForms.iOS/TwinTechs/Ios/Controls/PageViewContainerRenderer.cs:42
at TwinTechs.Ios.Controls.PageViewContainerRenderer.m__0 () [0x0001d] in /Users/fulvio/Downloads/TwinTechsFormsLib-master/TwinTechsForms/TwinTechsForms.iOS/TwinTechs/Ios/Controls/PageViewContainerRenderer.cs:74
at Foundation.NSAsyncActionDispatcher.Apply () [0x00000] in /Users/builder/data/lanes/2377/73229919/source/maccore/src/Foundation/NSAction.cs:163
at (wrapper managed-to-native) UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr)
at UIKit.UIApplication.Main (System.String[] args, IntPtr principal, IntPtr delegate) [0x00005] in /Users/builder/data/lanes/2377/73229919/source/maccore/src/UIKit/UIApplication.cs:77
at UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x00038] in /Users/builder/data/lanes/2377/73229919/source/maccore/src/UIKit/UIApplication.cs:61
at TwinTechsFormsExample.iOS.Application.Main (System.String[] args) [0x00008] in /Users/fulvio/Downloads/TwinTechsFormsLib-master/TwinTechsForms/iOS/Main.cs:17
2016-01-27 16:17:52.043 TwinTechsFormsExample.iOS[950:39350] critical: Stacktrace:

2016-01-27 16:17:52.043 TwinTechsFormsExample.iOS[950:39350] critical:
Native stacktrace:

2016-01-27 16:17:52.073 TwinTechsFormsExample.iOS[950:39350] critical: 0 TwinTechsFormsExample.iOS 0x0019e8f7 mono_handle_native_sigsegv + 311
2016-01-27 16:17:52.073 TwinTechsFormsExample.iOS[950:39350] critical: 1 TwinTechsFormsExample.iOS 0x001a5ed1 sigabrt_signal_handler + 145
2016-01-27 16:17:52.073 TwinTechsFormsExample.iOS[950:39350] critical: 2 libsystem_platform.dylib 0x0964501b _sigtramp + 43
2016-01-27 16:17:52.074 TwinTechsFormsExample.iOS[950:39350] critical: 3 ??? 0xffffffff 0x0 + 4294967295
2016-01-27 16:17:52.074 TwinTechsFormsExample.iOS[950:39350] critical: 4 libsystem_c.dylib 0x093d965d abort + 156
2016-01-27 16:17:52.074 TwinTechsFormsExample.iOS[950:39350] critical: 5 TwinTechsFormsExample.iOS 0x00326706 xamarin_unhandled_exception_handler + 342
2016-01-27 16:17:52.074 TwinTechsFormsExample.iOS[950:39350] critical: 6 TwinTechsFormsExample.iOS 0x0019f15b mono_invoke_unhandled_exception_hook + 91
2016-01-27 16:17:52.074 TwinTechsFormsExample.iOS[950:39350] critical: 7 TwinTechsFormsExample.iOS 0x0019dfdd mono_handle_exception_internal + 6061
2016-01-27 16:17:52.074 TwinTechsFormsExample.iOS[950:39350] critical: 8 TwinTechsFormsExample.iOS 0x0019c829 mono_handle_exception + 41
2016-01-27 16:17:52.074 TwinTechsFormsExample.iOS[950:39350] critical: 9 TwinTechsFormsExample.iOS 0x00138f1e mono_x86_throw_exception + 142
2016-01-27 16:17:52.075 TwinTechsFormsExample.iOS[950:39350] critical: 10 ??? 0x1616ef57 0x0 + 370601815
2016-01-27 16:17:52.075 TwinTechsFormsExample.iOS[950:39350] critical: 11 ??? 0x1a8f0dbc 0x0 + 445582780
2016-01-27 16:17:52.075 TwinTechsFormsExample.iOS[950:39350] critical: 12 ??? 0x1a8f0d50 0x0 + 445582672
2016-01-27 16:17:52.075 TwinTechsFormsExample.iOS[950:39350] critical: 13 ??? 0x1a8f0cfc 0x0 + 445582588
2016-01-27 16:17:52.075 TwinTechsFormsExample.iOS[950:39350] critical: 14 ??? 0x1a8f0b7b 0x0 + 445582203
2016-01-27 16:17:52.075 TwinTechsFormsExample.iOS[950:39350] critical: 15 ??? 0x1a8eeca0 0x0 + 445574304
2016-01-27 16:17:52.075 TwinTechsFormsExample.iOS[950:39350] critical: 16 ??? 0x1a8eebd4 0x0 + 445574100
2016-01-27 16:17:52.075 TwinTechsFormsExample.iOS[950:39350] critical: 17 ??? 0x1a2928d9 0x0 + 438905049
2016-01-27 16:17:52.075 TwinTechsFormsExample.iOS[950:39350] critical: 18 ??? 0x161f192e 0x0 + 371136814
2016-01-27 16:17:52.076 TwinTechsFormsExample.iOS[950:39350] critical: 19 TwinTechsFormsExample.iOS 0x001ab6a3 mono_jit_runtime_invoke + 707
2016-01-27 16:17:52.076 TwinTechsFormsExample.iOS[950:39350] critical: 20 TwinTechsFormsExample.iOS 0x0026180f mono_runtime_invoke + 127
2016-01-27 16:17:52.076 TwinTechsFormsExample.iOS[950:39350] critical: 21 TwinTechsFormsExample.iOS 0x000aa881 ZL30native_to_managed_trampoline_1P11objc_objectP13objc_selectorPP11_MonoMethodPKcS7 + 257
2016-01-27 16:17:52.076 TwinTechsFormsExample.iOS[950:39350] critical: 22 TwinTechsFormsExample.iOS 0x000aed1a -[MonoMac_NSAsyncActionDispatcher xamarinApplySelector] + 74
2016-01-27 16:17:52.076 TwinTechsFormsExample.iOS[950:39350] critical: 23 libobjc.A.dylib 0x084dc059 -[NSObject performSelector:withObject:] + 70
2016-01-27 16:17:52.076 TwinTechsFormsExample.iOS[950:39350] critical: 24 Foundation 0x010580d8 __NSThreadPerformPerform + 323
2016-01-27 16:17:52.076 TwinTechsFormsExample.iOS[950:39350] critical: 25 CoreFoundation 0x089206ff __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION
+ 15
2016-01-27 16:17:52.076 TwinTechsFormsExample.iOS[950:39350] critical: 26 CoreFoundation 0x0891638b __CFRunLoopDoSources0 + 523
2016-01-27 16:17:52.077 TwinTechsFormsExample.iOS[950:39350] critical: 27 CoreFoundation 0x089157a8 __CFRunLoopRun + 1032
2016-01-27 16:17:52.077 TwinTechsFormsExample.iOS[950:39350] critical: 28 CoreFoundation 0x089150e6 CFRunLoopRunSpecific + 470
2016-01-27 16:17:52.077 TwinTechsFormsExample.iOS[950:39350] critical: 29 CoreFoundation 0x08914efb CFRunLoopRunInMode + 123
2016-01-27 16:17:52.077 TwinTechsFormsExample.iOS[950:39350] critical: 30 GraphicsServices 0x09c13664 GSEventRunModal + 192
2016-01-27 16:17:52.077 TwinTechsFormsExample.iOS[950:39350] critical: 31 GraphicsServices 0x09c134a1 GSEventRun + 104
2016-01-27 16:17:52.077 TwinTechsFormsExample.iOS[950:39350] critical: 32 UIKit 0x0180ebfa UIApplicationMain + 160
2016-01-27 16:17:52.077 TwinTechsFormsExample.iOS[950:39350] critical: 33 ??? 0x18a09b50 0x0 + 413178704
2016-01-27 16:17:52.077 TwinTechsFormsExample.iOS[950:39350] critical: 34 ??? 0x18a09948 0x0 + 413178184
2016-01-27 16:17:52.078 TwinTechsFormsExample.iOS[950:39350] critical: 35 ??? 0x17dfea38 0x0 + 400550456
2016-01-27 16:17:52.078 TwinTechsFormsExample.iOS[950:39350] critical: 36 ??? 0x17dfe774 0x0 + 400549748
2016-01-27 16:17:52.078 TwinTechsFormsExample.iOS[950:39350] critical: 37 ??? 0x17dfe900 0x0 + 400550144
2016-01-27 16:17:52.078 TwinTechsFormsExample.iOS[950:39350] critical: 38 TwinTechsFormsExample.iOS 0x001ab6a3 mono_jit_runtime_invoke + 707
2016-01-27 16:17:52.078 TwinTechsFormsExample.iOS[950:39350] critical: 39 TwinTechsFormsExample.iOS 0x0026180f mono_runtime_invoke + 127
2016-01-27 16:17:52.078 TwinTechsFormsExample.iOS[950:39350] critical: 40 TwinTechsFormsExample.iOS 0x00266521 mono_runtime_exec_main + 401
2016-01-27 16:17:52.078 TwinTechsFormsExample.iOS[950:39350] critical: 41 TwinTechsFormsExample.iOS 0x002662e5 mono_runtime_run_main + 629
2016-01-27 16:17:52.078 TwinTechsFormsExample.iOS[950:39350] critical: 42 TwinTechsFormsExample.iOS 0x001341fd mono_jit_exec + 93
2016-01-27 16:17:52.078 TwinTechsFormsExample.iOS[950:39350] critical: 43 TwinTechsFormsExample.iOS 0x0033f871 xamarin_main + 2497
2016-01-27 16:17:52.079 TwinTechsFormsExample.iOS[950:39350] critical: 44 TwinTechsFormsExample.iOS 0x000f47a1 main + 113
2016-01-27 16:17:52.079 TwinTechsFormsExample.iOS[950:39350] critical: 45 libdyld.dylib 0x09332a21 start + 1
2016-01-27 16:17:52.079 TwinTechsFormsExample.iOS[950:39350] critical: 46 ??? 0x00000003 0x0 + 3

2016-01-27 16:17:52.079 TwinTechsFormsExample.iOS[950:39350] critical:

Got a SIGABRT while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries

used by your application.

PageViewContainer prevents App.MainPage change from working

I've run into a scenario where a Page with a PageViewContainer and a button that calls App.Current.MainPage = new NavigationPage(new MyPage()) does not work. The app appears to not change the MainPage.

However, MainPage is set, and if you minimize the application on iOS, then open it back up it will be correct.

Consider this page:

<ContentPage 
    xmlns="http://xamarin.com/schemas/2014/forms" 
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
    xmlns:ttc="clr-namespace:TwinTechs.Controls;assembly=TwinTechsForms"
    x:Class="CaseProjectTest.Views.MyPage" 
    Title="My Page">
    <ContentPage.Content>


        <StackLayout>

        <ttc:PageViewContainer>
            VerticalOptions="FillAndExpand"
            HorizontalOptions="FillAndExpand">

            <ttc:PageViewContainer.Content>

                <ContentPage>
                    <Label Text="Page in a Page"></Label>
                </ContentPage>

            </ttc:PageViewContainer.Content>

        </ttc:PageViewContainer>

        <Button Text="Click Me" Command="{Binding NavigateCommand}"/>

    </StackLayout>

    </ContentPage.Content>
</ContentPage>

The button command will cause App.Current.MainPage = new NavigationPage(new MyPageTwo()); to happen. MyPageTwo is just an empty ContentPage. When you press the button, MyPage is still showing. I would expect MyPageTwo to show (within the NavigationPage).

implement IBoxedCell

Hello,

I'm implementing this library on both Android and iOS (same solution/project). It works fine (super smooth!) in my Android project, but on iOS, my list doesn't load (fast)images and whenever I scroll, the app will crash with this message:

System.InvalidOperationException: Implement IBoxedCell on cell renderer: TwinTechs.Controls.NativeCell, TwinTechsLib.iOS, Version=1.0.5858.22559, Culture=neutral, PublicKeyToken=null

Google isn't helping me at all (it's as if IBoxedCell doesn't exist at all). It's working in the sample project, but it will crash everytime I try to run it on iOS.

FastGridCell: How to update bindings for viewable cells

Hi George,

I have an observable collection containing a large number or items (~100), and it is bound to the GridView's ItemsSource property. I've used your optimizations to achieve great performance improvements. However I would like for the viewcell's bindings to continue to be updated should the observable collection items be modified.

Basically, my use case is that I have a view cell with binding context A, displaying 3 labels with text A.1, A.2, A.3. When they are modified, the labels do not update.

If the viewcell is off screen, then as it is being scrolled into the viewable area, its SetupCell method will be called, and the bindings will be updated one time as the viewcell becomes visible.

How can I keep the updates active?

I tried doing the bindings in xaml but that did not work.

Thanks.

Only use FastCell on Android

Is there any fast way to only use FastCell on Android even if i had my forms project targeting Android and iOS?

PageViewContainer Carousel not working on iOS but working on Android

Hi,

I'm trying to use the PageViewContainer feature to show a CarouselPage inside an absolute layout ContentPage in order to be able to show additional layers above the Carousel. It is working as expected on Android but on iOS the container is simply not showing anything. I tried to debug a bit and I notice the "Bounds" property in iOS scenario is (0, 0, 0 0) which may be a starting point to realize what's going on (I didn't have more time to debug further, maybe you can realize something faster).

I'm testing with a Xamarin.Forms 2.0 app.

Any idea?

I'm attaching the screenshots of both cases. The big mountain image that seems overlaid is actually an image with AbsoluteLayout above the pageviewcontainer with the carousel. Notice in the android screenshots how I can move to next page and mountain is still overlaid as per the absolutelayout settings. That's awesome. But on iOS only the big mountain shows, nothing for the carousel. Also attaching the XAML.

Thank you! Awesome lib so far!

android1
android2
ios

xaml.txt

ListView or Grid not appearing when ContentPage inside PageViewContainer

When using a ListView or a Grid layout in a ContentPage which is placed inside a PageViewContainer the ContentPage appears empty (I've tested on Android).
The same ContentPage used outside the container displays fine. Is it something I'm doing wrong or is there a limitation on elements that can be used in a page placed inside a PageViewContainer?
Noticed that when calling PageViewContainer.Layout(....) the page contents appear as if the page is forced to repaint

How can i write the FastCell using c# instead Xaml?

First, thank you George.
So, as the title says. I prefer write in c# instead xaml, is that possible? If yes, how can i do this?
Just to explain the reason for that is i can't find any control (toolbox) in 'coding time'.
sem titulo

Problems trying to do this

The name 'InitializeComponent' does not exist in the current context

Swipe Up/Down gestures working fine with iOS emulator but not on actual device

Swipe up/down working fine with iOS 9.1 and 9.2 (iPhone 5S emulator). When I tried on an actual device (iPhone 5S running iOS 9.2) my app would crash.

System.MissingMethodException: Constructor on type 'UIKit.UISwipeGestureRecognizer' not found.

I can post the full stack trace if required. The app wouldn't crash when trying to swipe up or down, it was before, when configuring the gesture recognisers, with this code:

            SwipeGestureRecognizer LeftSwipeUpGestureRecognizer = new SwipeGestureRecognizer();
            LeftSwipeUpGestureRecognizer.Direction = SwipeGestureRecognizerDirection.Up;
            LeftSwipeUpGestureRecognizer.OnAction += (s, e) => HandleSwipeUp(SlidesArray, BubblesArray);
            LeftStackLayout.GestureRecognizers.Add(LeftSwipeUpGestureRecognizer);

            SwipeGestureRecognizer LeftSwipeDownGestureRecognizer = new SwipeGestureRecognizer();
            LeftSwipeDownGestureRecognizer.Direction = SwipeGestureRecognizerDirection.Down;
            LeftSwipeDownGestureRecognizer.OnAction += (s, e) => HandleSwipeDown(SlidesArray, BubblesArray);
            LeftStackLayout.GestureRecognizers.Add(LeftSwipeDownGestureRecognizer);
            LeftStackLayout.ProcessGestureRecognizers(); // This does both up and down.

I.e. commenting that code out to ignore the swipe up/down would stop the app from crashing.

Is this something you or anyone has seen before?

Thanks

LongPress is not working

The logPressGesture fire eventually, without respect time or MaxDistanceTolerance and never have the Recognized State, its always on Ended state when fired

Issue with TwinTechForms.SvgImage.Droid; errors in Resource.Designer.cs

When you install the SvgImage NuGet package and rebuild the Droid project, you get many errors in the Resource.Designer.cs file. These errors seem to be the exact same problems found in this issue that xLabs had here: https://github.com/XLabs/Xamarin-Forms-Labs/issues/1125. I therefore beleive that the solution would be the same with needing to update the Android support Libraries and rebuild it.

I will fork this, and see if I can get it to work correctly, if so I'll push it to a new branch with a link. If you don't see anything today, assume I got bored and abandoned this effort.

Layer exceeds max. dimensions supported by the GPU in TwinTech scroll view on Android Marshmallow

I am developing app in Xamarin forms. App requires horizontal scroll view with data binding functionality. I achieved it using TwinTech libraries [Very very thanks]. I am done with my functionality. App is working fine for iOS but for android it is crashing for Android Marshmallow. Only for all android marshmallow devices, It is throwing exception saying "Layer exceeds max. dimensions supported by the GPU."
I googled on it.
Following are the suggested approaches
Override HasOverlappingRenderring() and returning false.
https://code.google.com/p/android/issues/detail?id=167551
Setting transition group to true;
http://stackoverflow.com/questions/26626344/scene-transition-with-hero-elements-throws-layer-exceeds-max-dimensions-support
Transition listener interface implementation
https://github.com/googlesamples/android-ActivitySceneTransitionBasic/blob/master/Application/src/main/java/com/example/android/activityscenetransitionbasic/DetailActivity.java
I tried all these approaches. But doesn't works for me.
Below link says issue got reopened in Android M.
http://stackoverflow.com/questions/32071265/android-m-scene-transition-with-hero-elements-throws-java-lang-illegalstateexce

Can you please suggest something on this. Even rough idea is also fine. I can check those option. Thanks in Advance.

I am attaching few files which will help you to analyze problem. I have attached complete stack trace file.

For more details along with source files please refer http://forums.xamarin.com/discussion/64459/layer-exceeds-max-dimensions-supported-by-the-gpu-in-twintech-scroll-view-on-android-marshmallow#latest

Using gestures with map pins

It seems that a Pin is a special sort of object (that or it doesn't expose a lot of the properties). There doesn't seem to be a way to add a gesture to a pin (Pins have Clicked events rather than tapped and there isn't a way to convert a click to a gesture (despite them essentially being a single tap).

Is there a way to expose the parent view so a tap gesture can be added or are pins just not happy things?

Build issues - Swipe Gesture example does not show - most (maybe all) examples are empty

Android version has compile errors.

For IOS - had to remove this linker option:
-gcc_flags "-F/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries -all_load -ObjC -framework Reveal -framework QuartzCore -framework CFNetwork"

I'm am trying to use/understand the swipegesture Forms
sample - when I run the IOS sample and click on Swipe - nothing happens. I trace the code - seems to call InitializeComponent() and controls seem to be initialized - but no nav page shows up - and no exceptions. I'm using Xamarin Studio Stable release, building on a Mac, Xcode 6.4

screen shot 2015-10-21 at 3 58 57 pm

After further investigation - I trimmed the SwipeGestureExample.xaml to just the swipe left label and then commented out:

        <!--Label.GestureRecognizers>
            <gestures:SwipeGestureRecognizer
                Direction="Left"
                OnAction="OnAction" />
        </Label.GestureRecognizers-->

The page now comes up. Looks like the instantiation of gestures is somehow failing silently.

My shortened xaml is:








Gesture code

Hi

Some questions :

  1. Does the gesture recognizer from blog still work with the latest Xamarin version (using 2.5.0.91635).
  2. Is the gesture code also available as a nuget package without all SVG/XLab code?

I downloaded the code and removed all SVG and other code not necessary, retargeted the code so it compiles but do not see any activity in the android native counterpart.

Android.Views.GestureDetector - System.ObjectDisposedException: Cannot access a disposed object.

Just a simple GridView with FastCellView.
Scroll fast up and down and it happens.
Latest version
Call stack (if it helps...)
01-03 17:15:57.617 I/MonoDroid( 6959): UNHANDLED EXCEPTION:
01-03 17:15:57.637 I/MonoDroid( 6959): System.ObjectDisposedException: Cannot access a disposed object.
01-03 17:15:57.637 I/MonoDroid( 6959): Object name: 'Android.Views.GestureDetector'.
01-03 17:15:57.637 I/MonoDroid( 6959): at (wrapper managed-to-native) Java.Interop.NativeMethods:java_interop_jnienv_call_nonvirtual_boolean_method_a (intptr,intptr&,intptr,intptr,intptr,Java.Interop.JniArgumentValue*)
01-03 17:15:57.637 I/MonoDroid( 6959): at Java.Interop.JniEnvironment+InstanceMethods.CallNonvirtualBooleanMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniObjectReference type, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x0008e] in <1251187d325447658fd4b811052ab7f9>:0
01-03 17:15:57.637 I/MonoDroid( 6959): at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeVirtualBooleanMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x00068] in <1251187d325447658fd4b811052ab7f9>:0
01-03 17:15:57.637 I/MonoDroid( 6959): at Android.Views.View.DispatchTouchEvent (Android.Views.MotionEvent e) [0x00036] in <9cbfeeb6970a4b43b4b2e14bec2c850a>:0
01-03 17:15:57.637 I/MonoDroid( 6959): at Xamarin.Forms.Platform.Android.PlatformRenderer.DispatchTouchEvent (Android.Views.MotionEvent e) [0x0001e] in C:\BuildAgent2\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\Renderers\ListViewRenderer.cs:96
01-03 17:15:57.637 I/MonoDroid( 6959): at Android.Views.View.n_DispatchTouchEvent_Landroid_view_MotionEvent_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_e) [0x00011] in <9cbfeeb6970a4b43b4b2e14bec2c850a>:0
01-03 17:15:57.637 I/MonoDroid( 6959): at (wrapper dynamic-method) System.Object:e4f2c922-9043-4cae-9ed6-bfb828d1aabc (intptr,intptr,intptr)

Dror

How can I use this lib?

I have download all the source code but it doesn't compile me.

I also have searched this library in NuGet and I haven't found anything.

Thanks.

Binding not working correctly with collections that use INotifyPropertyChanged

I have a list that has it's item source set to an ObservableCollection. Every minute I have to update one of the properties in the collection (it's time based), so the collection will update (collection uses INotifyPropertyChanged). This works with FastCell, except it seems every few times it jumps back. For example I had it just add 1 to an integer. it would say 1, 2, 3, 4, 3... etc. Once I switched back to normal cells they work perfectly. Any ideas what could cause this? I can throw together a sample if you'd like.

Page inside page is not working on iOS

2016-03-09 09:49:41.321 TwinTechsFormsExample.iOS[11157:593426] critical:
Native stacktrace:

2016-03-09 09:49:41.367 TwinTechsFormsExample.iOS[11157:593426] critical: 0 TwinTechsFormsExample.iOS 0x0011f657 mono_handle_native_sigsegv + 311
2016-03-09 09:49:41.444 TwinTechsFormsExample.iOS[11157:593426] critical: 1 TwinTechsFormsExample.iOS 0x00126ca1 sigabrt_signal_handler + 145
2016-03-09 09:49:41.444 TwinTechsFormsExample.iOS[11157:593426] critical: 2 libsystem_platform.dylib 0x095c379b _sigtramp + 43
2016-03-09 09:49:41.444 TwinTechsFormsExample.iOS[11157:593426] critical: 3 ??? 0xffffffff 0x0 + 4294967295
2016-03-09 09:49:41.445 TwinTechsFormsExample.iOS[11157:593426] critical: 4 libsystem_c.dylib 0x0935a65d abort + 156
2016-03-09 09:49:41.445 TwinTechsFormsExample.iOS[11157:593426] critical: 5 TwinTechsFormsExample.iOS 0x002a76e6 xamarin_unhandled_exception_handler + 342
2016-03-09 09:49:41.445 TwinTechsFormsExample.iOS[11157:593426] critical: 6 TwinTechsFormsExample.iOS 0x0011febb mono_invoke_unhandled_exception_hook + 91
2016-03-09 09:49:41.446 TwinTechsFormsExample.iOS[11157:593426] critical: 7 TwinTechsFormsExample.iOS 0x0011ed3d mono_handle_exception_internal + 6061
2016-03-09 09:49:41.446 TwinTechsFormsExample.iOS[11157:593426] critical: 8 TwinTechsFormsExample.iOS 0x0011d589 mono_handle_exception + 41
2016-03-09 09:49:41.446 TwinTechsFormsExample.iOS[11157:593426] critical: 9 TwinTechsFormsExample.iOS 0x000b99ee mono_x86_throw_exception + 142
2016-03-09 09:49:41.490 TwinTechsFormsExample.iOS[11157:593426] critical: 10 ??? 0x160eff57 0x0 + 370081623
2016-03-09 09:49:41.491 TwinTechsFormsExample.iOS[11157:593426] critical: 11 ??? 0x1a194360 0x0 + 437863264
2016-03-09 09:49:41.491 TwinTechsFormsExample.iOS[11157:593426] critical: 12 ??? 0x1a194320 0x0 + 437863200
2016-03-09 09:49:41.491 TwinTechsFormsExample.iOS[11157:593426] critical: 13 ??? 0x1a1942f0 0x0 + 437863152
2016-03-09 09:49:41.492 TwinTechsFormsExample.iOS[11157:593426] critical: 14 ??? 0x1a194286 0x0 + 437863046
2016-03-09 09:49:41.492 TwinTechsFormsExample.iOS[11157:593426] critical: 15 ??? 0x1a18d5c8 0x0 + 437835208
2016-03-09 09:49:41.492 TwinTechsFormsExample.iOS[11157:593426] critical: 16 ??? 0x1a18d56c 0x0 + 437835116
2016-03-09 09:49:41.492 TwinTechsFormsExample.iOS[11157:593426] critical: 17 ??? 0x1a1101c5 0x0 + 437322181
2016-03-09 09:49:41.493 TwinTechsFormsExample.iOS[11157:593426] critical: 18 ??? 0x1615ed50 0x0 + 370535760
2016-03-09 09:49:41.493 TwinTechsFormsExample.iOS[11157:593426] critical: 19 TwinTechsFormsExample.iOS 0x0012c4a3 mono_jit_runtime_invoke + 707
2016-03-09 09:49:41.493 TwinTechsFormsExample.iOS[11157:593426] critical: 20 TwinTechsFormsExample.iOS 0x001e263f mono_runtime_invoke + 127
2016-03-09 09:49:41.493 TwinTechsFormsExample.iOS[11157:593426] critical: 21 TwinTechsFormsExample.iOS 0x0002b841 ZL30native_to_managed_trampoline_3P11objc_objectP13objc_selectorPP11_MonoMethodPKcS7 + 257
2016-03-09 09:49:41.493 TwinTechsFormsExample.iOS[11157:593426] critical: 22 TwinTechsFormsExample.iOS 0x0003d69a -[MonoMac_NSAsyncActionDispatcher xamarinApplySelector] + 74
2016-03-09 09:49:41.493 TwinTechsFormsExample.iOS[11157:593426] critical: 23 libobjc.A.dylib 0x0845d059 -[NSObject performSelector:withObject:] + 70
2016-03-09 09:49:41.494 TwinTechsFormsExample.iOS[11157:593426] critical: 24 Foundation 0x00e3c0d8 __NSThreadPerformPerform + 323
2016-03-09 09:49:41.494 TwinTechsFormsExample.iOS[11157:593426] critical: 25 CoreFoundation 0x088a16ff __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION
+ 15
2016-03-09 09:49:41.494 TwinTechsFormsExample.iOS[11157:593426] critical: 26 CoreFoundation 0x0889738b __CFRunLoopDoSources0 + 523
2016-03-09 09:49:41.494 TwinTechsFormsExample.iOS[11157:593426] critical: 27 CoreFoundation 0x088967a8 __CFRunLoopRun + 1032
2016-03-09 09:49:41.494 TwinTechsFormsExample.iOS[11157:593426] critical: 28 CoreFoundation 0x088960e6 CFRunLoopRunSpecific + 470
2016-03-09 09:49:41.494 TwinTechsFormsExample.iOS[11157:593426] critical: 29 CoreFoundation 0x08895efb CFRunLoopRunInMode + 123
2016-03-09 09:49:41.494 TwinTechsFormsExample.iOS[11157:593426] critical: 30 GraphicsServices 0x09b94664 GSEventRunModal + 192
2016-03-09 09:49:41.495 TwinTechsFormsExample.iOS[11157:593426] critical: 31 GraphicsServices 0x09b944a1 GSEventRun + 104
2016-03-09 09:49:41.495 TwinTechsFormsExample.iOS[11157:593426] critical: 32 UIKit 0x0171ebfa UIApplicationMain + 160
2016-03-09 09:49:41.495 TwinTechsFormsExample.iOS[11157:593426] critical: 33 ??? 0x17ce08f0 0x0 + 399378672
2016-03-09 09:49:41.495 TwinTechsFormsExample.iOS[11157:593426] critical: 34 ??? 0x17ce07dc 0x0 + 399378396
2016-03-09 09:49:41.495 TwinTechsFormsExample.iOS[11157:593426] critical: 35 ??? 0x17cdf5d8 0x0 + 399373784
2016-03-09 09:49:41.495 TwinTechsFormsExample.iOS[11157:593426] critical: 36 ??? 0x17cdf46c 0x0 + 399373420
2016-03-09 09:49:41.646 TwinTechsFormsExample.iOS[11157:593426] critical: 37 ??? 0x17cdf524 0x0 + 399373604
2016-03-09 09:49:41.647 TwinTechsFormsExample.iOS[11157:593426] critical: 38 TwinTechsFormsExample.iOS 0x0012c4a3 mono_jit_runtime_invoke + 707
2016-03-09 09:49:41.647 TwinTechsFormsExample.iOS[11157:593426] critical: 39 TwinTechsFormsExample.iOS 0x001e263f mono_runtime_invoke + 127
2016-03-09 09:49:41.647 TwinTechsFormsExample.iOS[11157:593426] critical: 40 TwinTechsFormsExample.iOS 0x001e7351 mono_runtime_exec_main + 401
2016-03-09 09:49:41.648 TwinTechsFormsExample.iOS[11157:593426] critical: 41 TwinTechsFormsExample.iOS 0x001e7115 mono_runtime_run_main + 629
2016-03-09 09:49:41.648 TwinTechsFormsExample.iOS[11157:593426] critical: 42 TwinTechsFormsExample.iOS 0x000b4ccd mono_jit_exec + 93
2016-03-09 09:49:41.648 TwinTechsFormsExample.iOS[11157:593426] critical: 43 TwinTechsFormsExample.iOS 0x002c0851 xamarin_main + 2497
2016-03-09 09:49:41.649 TwinTechsFormsExample.iOS[11157:593426] critical: 44 TwinTechsFormsExample.iOS 0x00075211 main + 113
2016-03-09 09:49:41.649 TwinTechsFormsExample.iOS[11157:593426] critical: 45 libdyld.dylib 0x092b3a21 start + 1
#2016-03-09 09:49:41.649 TwinTechsFormsExample.iOS[11157:593426] critical:

Got a SIGABRT while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries

used by your application.

Date of nuget

Hey :),
do you have a estimated timespan when you want to release a nuget package?
I would be very happy to have a package of this very smart solution.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.