@@ -428,14 +428,12 @@ namespace winrt::XamlToolkit::WinUI::Controls::implementation
428428
429429 void LayoutTransformControl::UnsubscribeFromTransformPropertyChanges (winrt::Microsoft::UI::Xaml::Media::Transform const & transform)
430430 {
431- const auto & propertyChangeEventSources =
432- _transformPropertyChangeEventSources[transform];
431+ // const auto& propertyChangeEventSources = _transformPropertyChangeEventSources[transform];
433432
434- for (auto & propertyChangeEventSource : propertyChangeEventSources)
435- {
436- propertyChangeEventSource->ValueChanged .clear (); // -= OnTransformPropertyChanged;
437- propertyChangeEventSource->Unregister ();
438- }
433+ // for (auto& propertyChangeEventSource : propertyChangeEventSources)
434+ // {
435+ // propertyChangeEventSource->unsubscribe();
436+ // }
439437
440438 _transformPropertyChangeEventSources.erase (transform);
441439 }
@@ -452,45 +450,45 @@ namespace winrt::XamlToolkit::WinUI::Controls::implementation
452450 return ;
453451 }
454452
455- auto propertyChangeEventSources = std::vector<std::unique_ptr<event_source >>();
453+ auto propertyChangeEventSources = std::vector<std::unique_ptr<event_source_registration >>();
456454 _transformPropertyChangeEventSources.emplace (transform, std::move (propertyChangeEventSources));
457455
458456 if (auto rotateTransform = transform.try_as <RotateTransform>())
459457 {
460- auto anglePropertyChangeEventSource = std::make_unique<event_source >(rotateTransform, RotateTransform::AngleProperty ());
461- anglePropertyChangeEventSource->ValueChanged . add ({ get_weak (), &LayoutTransformControl::OnTransformPropertyChanged });
458+ auto anglePropertyChangeEventSource = std::make_unique<event_source_registration >(rotateTransform, RotateTransform::AngleProperty ());
459+ anglePropertyChangeEventSource->subscribe ({ get_weak (), &LayoutTransformControl::OnTransformPropertyChanged });
462460 propertyChangeEventSources.emplace_back (std::move (anglePropertyChangeEventSource));
463461 return ;
464462 }
465463
466464 if (auto scaleTransform = transform.try_as <ScaleTransform>())
467465 {
468- auto scaleXPropertyChangeEventSource = std::make_unique<event_source >(scaleTransform, ScaleTransform::ScaleXProperty ());
469- scaleXPropertyChangeEventSource->ValueChanged . add ({ get_weak (), &LayoutTransformControl::OnTransformPropertyChanged });
466+ auto scaleXPropertyChangeEventSource = std::make_unique<event_source_registration >(scaleTransform, ScaleTransform::ScaleXProperty ());
467+ scaleXPropertyChangeEventSource->subscribe ({ get_weak (), &LayoutTransformControl::OnTransformPropertyChanged });
470468 propertyChangeEventSources.emplace_back (std::move (scaleXPropertyChangeEventSource));
471469
472- auto scaleYPropertyChangeEventSource = std::make_unique<event_source >(scaleTransform, ScaleTransform::ScaleYProperty ());
473- scaleYPropertyChangeEventSource->ValueChanged . add ({ get_weak (), &LayoutTransformControl::OnTransformPropertyChanged });
470+ auto scaleYPropertyChangeEventSource = std::make_unique<event_source_registration >(scaleTransform, ScaleTransform::ScaleYProperty ());
471+ scaleYPropertyChangeEventSource->subscribe ({ get_weak (), &LayoutTransformControl::OnTransformPropertyChanged });
474472 propertyChangeEventSources.emplace_back (std::move (scaleYPropertyChangeEventSource));
475473 return ;
476474 }
477475
478476 if (auto skewTransform = transform.try_as <SkewTransform>())
479477 {
480- auto angleXPropertyChangeEventSource = std::make_unique<event_source >(skewTransform, SkewTransform::AngleXProperty ());
481- angleXPropertyChangeEventSource->ValueChanged . add ({ get_weak (), &LayoutTransformControl::OnTransformPropertyChanged });
478+ auto angleXPropertyChangeEventSource = std::make_unique<event_source_registration >(skewTransform, SkewTransform::AngleXProperty ());
479+ angleXPropertyChangeEventSource->subscribe ({ get_weak (), &LayoutTransformControl::OnTransformPropertyChanged });
482480 propertyChangeEventSources.emplace_back (std::move (angleXPropertyChangeEventSource));
483481
484- auto angleYPropertyChangeEventSource = std::make_unique<event_source >(skewTransform, SkewTransform::AngleYProperty ());
485- angleYPropertyChangeEventSource->ValueChanged . add ({ get_weak (), &LayoutTransformControl::OnTransformPropertyChanged });
482+ auto angleYPropertyChangeEventSource = std::make_unique<event_source_registration >(skewTransform, SkewTransform::AngleYProperty ());
483+ angleYPropertyChangeEventSource->subscribe ({ get_weak (), &LayoutTransformControl::OnTransformPropertyChanged });
486484 propertyChangeEventSources.emplace_back (std::move (angleYPropertyChangeEventSource));
487485 return ;
488486 }
489487
490488 if (auto matrixTransform = transform.try_as <MatrixTransform>())
491489 {
492- auto matrixPropertyChangeEventSource = std::make_unique<event_source >(matrixTransform, MatrixTransform::MatrixProperty ());
493- matrixPropertyChangeEventSource->ValueChanged . add ({ get_weak (), &LayoutTransformControl::OnTransformPropertyChanged });
490+ auto matrixPropertyChangeEventSource = std::make_unique<event_source_registration >(matrixTransform, MatrixTransform::MatrixProperty ());
491+ matrixPropertyChangeEventSource->subscribe ({ get_weak (), &LayoutTransformControl::OnTransformPropertyChanged });
494492 propertyChangeEventSources.emplace_back (std::move (matrixPropertyChangeEventSource));
495493 }
496494 }
0 commit comments