Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/xamarin/Xamarin.PropertyEditing.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Maupin <ermaup@microsoft.com>2018-08-31 21:24:05 +0300
committerEric Maupin <ermaup@microsoft.com>2018-08-31 21:24:08 +0300
commit1a6f3bef20884741e1e19d35457fda38cb1dac21 (patch)
treefcb02adbbab8330eb12589b72f151cdce07f69ec /Xamarin.PropertyEditing.Windows
parentb875e0c1a6fabed19e02c4148e829ddd91a4ed38 (diff)
[Win] Do not rely on e.OldValue in DataContextChanged
When items are disconnected, you do not get the proper oldvalue in e.OldValue, you get a {DisconnectedItem} instead. We need to rely on our own tracking of the VM we were subscribed to so we can unsubscribe.
Diffstat (limited to 'Xamarin.PropertyEditing.Windows')
-rw-r--r--Xamarin.PropertyEditing.Windows/ObjectEditorControl.cs17
-rw-r--r--Xamarin.PropertyEditing.Windows/PropertyButton.cs10
2 files changed, 14 insertions, 13 deletions
diff --git a/Xamarin.PropertyEditing.Windows/ObjectEditorControl.cs b/Xamarin.PropertyEditing.Windows/ObjectEditorControl.cs
index 7ecd891..eec3c44 100644
--- a/Xamarin.PropertyEditing.Windows/ObjectEditorControl.cs
+++ b/Xamarin.PropertyEditing.Windows/ObjectEditorControl.cs
@@ -16,24 +16,25 @@ namespace Xamarin.PropertyEditing.Windows
DataContextChanged += OnDataContextChanged;
}
+ private ObjectPropertyViewModel vm;
+
private void OnDataContextChanged (object sender, DependencyPropertyChangedEventArgs e)
{
- var vm = e.OldValue as ObjectPropertyViewModel;
- if (vm != null)
- vm.TypeRequested -= OnTypeRequested;
+ if (this.vm != null)
+ this.vm.TypeRequested -= OnTypeRequested;
- vm = e.NewValue as ObjectPropertyViewModel;
- if (vm != null)
- vm.TypeRequested += OnTypeRequested;
+ this.vm = e.NewValue as ObjectPropertyViewModel;
+ if (this.vm != null)
+ this.vm.TypeRequested += OnTypeRequested;
}
private void OnTypeRequested (object sender, TypeRequestedEventArgs e)
{
- var vm = (ObjectPropertyViewModel)sender;
+ var vsender = (ObjectPropertyViewModel)sender;
var panel = this.FindPropertiesHost ();
- ITypeInfo type = TypeSelectorWindow.RequestType (panel, vm.AssignableTypes);
+ ITypeInfo type = TypeSelectorWindow.RequestType (panel, vsender.AssignableTypes);
e.SelectedType = type;
}
}
diff --git a/Xamarin.PropertyEditing.Windows/PropertyButton.cs b/Xamarin.PropertyEditing.Windows/PropertyButton.cs
index ef59783..89434de 100644
--- a/Xamarin.PropertyEditing.Windows/PropertyButton.cs
+++ b/Xamarin.PropertyEditing.Windows/PropertyButton.cs
@@ -100,11 +100,11 @@ namespace Xamarin.PropertyEditing.Windows
private void OnDataContextChanged (object sender, DependencyPropertyChangedEventArgs e)
{
- if (e.OldValue is PropertyViewModel pvm) {
- pvm.PropertyChanged -= OnPropertyChanged;
- pvm.ResourceRequested -= OnResourceRequested;
- pvm.CreateBindingRequested -= OnCreateBindingRequested;
- pvm.CreateResourceRequested -= OnCreateResourceRequested;
+ if (this.vm != null) {
+ this.vm.PropertyChanged -= OnPropertyChanged;
+ this.vm.ResourceRequested -= OnResourceRequested;
+ this.vm.CreateBindingRequested -= OnCreateBindingRequested;
+ this.vm.CreateResourceRequested -= OnCreateResourceRequested;
}
this.vm = e.NewValue as PropertyViewModel;