private void OnUserPresetableChanged(IUserPresetable oldValue, IUserPresetable newValue) {
if (oldValue != null) {
Instances.Remove(oldValue.PresetableKey);
}
Instances.RemoveDeadReferences();
if (newValue != null) {
Instances[newValue.PresetableKey] = new WeakReference<UserPresetsControl>(this);
}
if (_presetable != null) {
PresetsManager.Instance.Watcher(_presetable.PresetableCategory).Update -= Presets_Update;
_presetable.Changed -= Presetable_Changed;
}
_presetable = newValue;
SetValue(PreviewProviderPropertyKey, _presetable as IPresetsPreviewProvider);
if (_presetable == null) return;
PresetsManager.Instance.Watcher(_presetable.PresetableCategory).Update += Presets_Update;
_presetable.Changed += Presetable_Changed;
UpdateSavedPresets();
SetChanged();
}