diff options
Diffstat (limited to 'Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue2354.cs')
-rw-r--r-- | Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue2354.cs | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue2354.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue2354.cs new file mode 100644 index 00000000..1e676f12 --- /dev/null +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue2354.cs @@ -0,0 +1,116 @@ +using System; + +using Xamarin.Forms; +using System.Collections.Generic; +using Xamarin.Forms.CustomAttributes; + +#if UITEST +using NUnit.Framework; +using Xamarin.UITest; +#endif + +namespace Xamarin.Forms.Controls +{ + [Preserve (AllMembers = true)] + [Issue(IssueTracker.Github, 2354, "ListView, ImageCell and disabled source cache and same image url",PlatformAffected.iOS | PlatformAffected.Android)] + public class Issue2354 : TestContentPage + { + protected override void Init () + { + var presidents = new List<President> (); + for (int i = 0; i < 10; i++) { + presidents.Add (new President ($"Presidente {44 - i}", 1, $"http://static.c-span.org/assets/images/series/americanPresidents/{43 - i}_400.png")); + } + + var header = new Label { + Text = "Presidents", + HorizontalOptions = LayoutOptions.Center + }; + + var cell = new DataTemplate (typeof(CustomCell)); + + var listView = new ListView { + ItemsSource = presidents, + ItemTemplate = cell, + RowHeight = 200 + }; + + + Content = new StackLayout { + Children = { + header, + listView + } + }; + } + + public class President + { + public President (string name, int position, string image) + { + Name = name; + Position = position; + Image = image; + } + + public string Name { private set; get; } + + public int Position { private set; get; } + + public string Image { private set; get; } + } + + + [Preserve (AllMembers = true)] + public class CustomCell : ViewCell + { + public CustomCell() + { + var image = new Image + { + HorizontalOptions = LayoutOptions.Start, + Aspect = Aspect.AspectFill + }; + + var source = new UriImageSource { + CachingEnabled = false, + }; + + source.SetBinding(UriImageSource.UriProperty, new Binding("Image", converter: new UriConverter())); + + image.Source = source; + + + View = image; + } + } + + public class UriConverter : IValueConverter + { + + public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) + { + return new Uri((string) value); + } + + public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) + { + throw new NotImplementedException(); + } + + } + +#if UITEST + [Test] + public void TestDoesntCrashWithCachingDisable () + { + RunningApp.ScrollDown (); + RunningApp.ScrollDown (); + } +#endif + + } + +} + + |