From 81c9a5256c981c852d8b8796d3a688e9f4be093b Mon Sep 17 00:00:00 2001 From: Artem Utin Date: Tue, 8 Jan 2019 11:17:28 +1000 Subject: [PATCH] added case in GTK listviewrendered for change of SelectedItem property (#4757) --- .../Issue4748.cs | 39 ++++++++++++++++++++++ .../Xamarin.Forms.Controls.Issues.Shared.projitems | 1 + .../Renderers/ListViewRenderer.cs | 7 ++++ 3 files changed, 47 insertions(+) create mode 100644 Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue4748.cs diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue4748.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue4748.cs new file mode 100644 index 0000000..7110cdc --- /dev/null +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Issue4748.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; +using Xamarin.Forms.CustomAttributes; +using Xamarin.Forms.Internals; + +namespace Xamarin.Forms.Controls.Issues +{ + [Preserve(AllMembers = true)] + [Issue(IssueTracker.Github, 4748, "Setting SelectedItem property of GTK ListView does not reflected in UI", PlatformAffected.Default)] + public class Issue4748 : TestContentPage + { + protected override void Init() + { + var layout = new StackLayout(); + var lastItem = "Item3"; + var listView = new ListView + { + ItemsSource = new List + { + "Item1", + "Item2", + lastItem + } + }; + + var button = new Button + { + Text = "Select last item", + AutomationId = "SelectLastItem" + }; + + button.Clicked += (_, __) => listView.SelectedItem = lastItem; + layout.Children.Add(listView); + layout.Children.Add(button); + + Content = layout; + } + + } +} \ No newline at end of file diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems index 00da685..f5c9c8a 100644 --- a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems @@ -548,6 +548,7 @@ + diff --git a/Xamarin.Forms.Platform.GTK/Renderers/ListViewRenderer.cs b/Xamarin.Forms.Platform.GTK/Renderers/ListViewRenderer.cs index ab70213..e155a06 100644 --- a/Xamarin.Forms.Platform.GTK/Renderers/ListViewRenderer.cs +++ b/Xamarin.Forms.Platform.GTK/Renderers/ListViewRenderer.cs @@ -95,6 +95,8 @@ namespace Xamarin.Forms.Platform.GTK.Renderers UpdateIsRefreshing(); else if (e.PropertyName == ListView.IsPullToRefreshEnabledProperty.PropertyName) UpdatePullToRefreshEnabled(); + else if (e.PropertyName == ListView.SelectedItemProperty.PropertyName) + UpdateSelectedItem(); } protected override void Dispose(bool disposing) @@ -436,6 +438,11 @@ namespace Xamarin.Forms.Platform.GTK.Renderers } } + private void UpdateSelectedItem() + { + _listView?.SetSeletedItem(Element.SelectedItem); + } + private void UpdateGrouping() { var templatedItems = TemplatedItemsView.TemplatedItems; -- 2.7.4