summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue2354.cs
diff options
context:
space:
mode:
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.cs116
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
+
+ }
+
+}
+
+