FrameworkElement.SizeChanged event not raised when resizing control with changing zoom level












0















I have a wpf user control, and I listen to the FrameworkElement.SizeChanged event. In OnSizeChanged I need to recalculate zoom and apply back on the control.
The overall task is to scale the content inside the user control when the control is resized.



public class PictureDisplay: Control
{
public PictureDisplay()
{
SizeChanged += OnSizeChanged;
}
private void OnSizeChanged(object sender, SizeChangedEventArgs e)
{
//Recalculate zoomValue with new control dimensions
if(zoomvalue changes)
ApplyZoom(zoomValue);
}
private ApplyZoom(double zoomValue)
{
ScaleTransform tf = (ScaleTransform)dc._image.LayoutTransform;
tf.ScaleX = zoomValue;
tf.ScaleY = zoomValue;
}
}


All resize operations need not result in a new zoomValue. Suppose I resized along the X-axis with a minimal offset, and let's say my custom calculation of zoomValue doesnt create a new zoomValue, I am able to resize the user control on UI and receive SizeChanged events.
But when resizing results in the creation of a new zoomvalue, and as soon as I apply the new zoomValue on the UI, then I am not able to resize the control on the UI and I no longer receive SizeChanged events. Though I drag the mouse to resize, it doesnt. If I release the mouse and do again I see the same behavior.



So, in one stretch of mouse operation sequence, upon new zoom level getting applied to the control, I cant resize the control further. If I release the mouse and try to resize I am able to, but only till newer zoom gets applied. With changing zoom levels of the content I am unable to drag and resize in a go. If I disable ApplyZoom function I can resize the control as expected.
This gives me a feeling the resize of the control itself is not working when the scale factor is modified.
What needs to be done to continuously/smoothly resize the control and render the content with updated scale factor?










share|improve this question



























    0















    I have a wpf user control, and I listen to the FrameworkElement.SizeChanged event. In OnSizeChanged I need to recalculate zoom and apply back on the control.
    The overall task is to scale the content inside the user control when the control is resized.



    public class PictureDisplay: Control
    {
    public PictureDisplay()
    {
    SizeChanged += OnSizeChanged;
    }
    private void OnSizeChanged(object sender, SizeChangedEventArgs e)
    {
    //Recalculate zoomValue with new control dimensions
    if(zoomvalue changes)
    ApplyZoom(zoomValue);
    }
    private ApplyZoom(double zoomValue)
    {
    ScaleTransform tf = (ScaleTransform)dc._image.LayoutTransform;
    tf.ScaleX = zoomValue;
    tf.ScaleY = zoomValue;
    }
    }


    All resize operations need not result in a new zoomValue. Suppose I resized along the X-axis with a minimal offset, and let's say my custom calculation of zoomValue doesnt create a new zoomValue, I am able to resize the user control on UI and receive SizeChanged events.
    But when resizing results in the creation of a new zoomvalue, and as soon as I apply the new zoomValue on the UI, then I am not able to resize the control on the UI and I no longer receive SizeChanged events. Though I drag the mouse to resize, it doesnt. If I release the mouse and do again I see the same behavior.



    So, in one stretch of mouse operation sequence, upon new zoom level getting applied to the control, I cant resize the control further. If I release the mouse and try to resize I am able to, but only till newer zoom gets applied. With changing zoom levels of the content I am unable to drag and resize in a go. If I disable ApplyZoom function I can resize the control as expected.
    This gives me a feeling the resize of the control itself is not working when the scale factor is modified.
    What needs to be done to continuously/smoothly resize the control and render the content with updated scale factor?










    share|improve this question

























      0












      0








      0








      I have a wpf user control, and I listen to the FrameworkElement.SizeChanged event. In OnSizeChanged I need to recalculate zoom and apply back on the control.
      The overall task is to scale the content inside the user control when the control is resized.



      public class PictureDisplay: Control
      {
      public PictureDisplay()
      {
      SizeChanged += OnSizeChanged;
      }
      private void OnSizeChanged(object sender, SizeChangedEventArgs e)
      {
      //Recalculate zoomValue with new control dimensions
      if(zoomvalue changes)
      ApplyZoom(zoomValue);
      }
      private ApplyZoom(double zoomValue)
      {
      ScaleTransform tf = (ScaleTransform)dc._image.LayoutTransform;
      tf.ScaleX = zoomValue;
      tf.ScaleY = zoomValue;
      }
      }


      All resize operations need not result in a new zoomValue. Suppose I resized along the X-axis with a minimal offset, and let's say my custom calculation of zoomValue doesnt create a new zoomValue, I am able to resize the user control on UI and receive SizeChanged events.
      But when resizing results in the creation of a new zoomvalue, and as soon as I apply the new zoomValue on the UI, then I am not able to resize the control on the UI and I no longer receive SizeChanged events. Though I drag the mouse to resize, it doesnt. If I release the mouse and do again I see the same behavior.



      So, in one stretch of mouse operation sequence, upon new zoom level getting applied to the control, I cant resize the control further. If I release the mouse and try to resize I am able to, but only till newer zoom gets applied. With changing zoom levels of the content I am unable to drag and resize in a go. If I disable ApplyZoom function I can resize the control as expected.
      This gives me a feeling the resize of the control itself is not working when the scale factor is modified.
      What needs to be done to continuously/smoothly resize the control and render the content with updated scale factor?










      share|improve this question














      I have a wpf user control, and I listen to the FrameworkElement.SizeChanged event. In OnSizeChanged I need to recalculate zoom and apply back on the control.
      The overall task is to scale the content inside the user control when the control is resized.



      public class PictureDisplay: Control
      {
      public PictureDisplay()
      {
      SizeChanged += OnSizeChanged;
      }
      private void OnSizeChanged(object sender, SizeChangedEventArgs e)
      {
      //Recalculate zoomValue with new control dimensions
      if(zoomvalue changes)
      ApplyZoom(zoomValue);
      }
      private ApplyZoom(double zoomValue)
      {
      ScaleTransform tf = (ScaleTransform)dc._image.LayoutTransform;
      tf.ScaleX = zoomValue;
      tf.ScaleY = zoomValue;
      }
      }


      All resize operations need not result in a new zoomValue. Suppose I resized along the X-axis with a minimal offset, and let's say my custom calculation of zoomValue doesnt create a new zoomValue, I am able to resize the user control on UI and receive SizeChanged events.
      But when resizing results in the creation of a new zoomvalue, and as soon as I apply the new zoomValue on the UI, then I am not able to resize the control on the UI and I no longer receive SizeChanged events. Though I drag the mouse to resize, it doesnt. If I release the mouse and do again I see the same behavior.



      So, in one stretch of mouse operation sequence, upon new zoom level getting applied to the control, I cant resize the control further. If I release the mouse and try to resize I am able to, but only till newer zoom gets applied. With changing zoom levels of the content I am unable to drag and resize in a go. If I disable ApplyZoom function I can resize the control as expected.
      This gives me a feeling the resize of the control itself is not working when the scale factor is modified.
      What needs to be done to continuously/smoothly resize the control and render the content with updated scale factor?







      c# wpf wpf-controls routed-events






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 14 '18 at 11:12









      JogaJoga

      9518




      9518
























          0






          active

          oldest

          votes











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53298889%2fframeworkelement-sizechanged-event-not-raised-when-resizing-control-with-changin%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53298889%2fframeworkelement-sizechanged-event-not-raised-when-resizing-control-with-changin%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Bressuire

          Vorschmack

          Quarantine