[C] Update SelectedItem prior to event invoke
authorPaul DiPietro <paul.dipietro@microsoft.com>
Wed, 1 Feb 2017 16:52:40 +0000 (10:52 -0600)
committerRui Marinho <me@ruimarinho.net>
Fri, 10 Mar 2017 14:33:57 +0000 (14:33 +0000)
Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla51642.xaml
Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla51642.xaml.cs
Xamarin.Forms.Core/Picker.cs

index e7318b6..8526144 100644 (file)
@@ -2,16 +2,15 @@
 <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
              xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
              x:Class="Xamarin.Forms.Controls.Issues.Bugzilla51642">
-  <StackLayout>
-    
-  <Picker>
-    <Picker.Items>
-      <x:String>1</x:String>
-      <x:String>2</x:String>
-      <x:String>3</x:String>
-    </Picker.Items>
-  </Picker>
-    <Picker ItemsSource="{Binding Items}"/>
-
-  </StackLayout>
+       <StackLayout>
+               <Picker>
+                       <Picker.Items>
+                               <x:String>1</x:String>
+                               <x:String>2</x:String>
+                               <x:String>3</x:String>
+                       </Picker.Items>
+               </Picker>
+               <Picker x:Name="BoundPicker" ItemsSource="{Binding Items}"/>
+               <Label x:Name="SelectedItemLabel"/>
+       </StackLayout>
 </ContentPage>
\ No newline at end of file
index ab16428..9bf210d 100644 (file)
@@ -18,6 +18,10 @@ namespace Xamarin.Forms.Controls.Issues
                {
                        InitializeComponent ();
             LoadDelayedVM();
+                       BoundPicker.SelectedIndexChanged += (s, e) =>
+                       {
+                               SelectedItemLabel.Text = BoundPicker.SelectedItem.ToString();
+                       };
                }
 
         public async void LoadDelayedVM()
index ae17969..ad85f48 100644 (file)
@@ -181,8 +181,8 @@ namespace Xamarin.Forms
                static void OnSelectedIndexChanged(object bindable, object oldValue, object newValue)
                {
                        var picker = (Picker)bindable;
-                       picker.SelectedIndexChanged?.Invoke(bindable, EventArgs.Empty);
                        picker.UpdateSelectedItem();
+                       picker.SelectedIndexChanged?.Invoke(bindable, EventArgs.Empty);
                }
 
                static void OnSelectedItemChanged(BindableObject bindable, object oldValue, object newValue)