/// <summary> /// Enables a transposer to the passed <paramref name="cache"/>. If there is already a transposer enabled then the old one will be removed and <see cref="ITransposer.OnUntie(object, object)"/> /// will be called. /// </summary> /// <param name="cache">The cache for enabling a transposer.</param> /// <param name="view">The view for the transposer.</param> /// <param name="transposer">The transposer which should be enabled.</param> private static void EnableTransposer(Dictionary <object, TransposerEntry> cache, object view, ITransposer transposer) { if (cache.TryGetValue(view, out TransposerEntry entry)) { object viewModel = entry.ViewModel; transposer = entry.Transposer; transposer?.OnUntie(view, viewModel); cache.Remove(view); } if (transposer == null) { return; } object context = GetContextFromView(view); transposer.OnTie(view, context); cache[view] = new TransposerEntry(transposer, context); }
public TransposerEntry(ITransposer transposer, object viewModel) { Transposer = transposer; ViewModel = viewModel; }