WPF Textblock translation based on reference point

后端 未结 2 1829
失恋的感觉
失恋的感觉 2020-12-21 17:41

Please check the attached image. I made the textblock origin to it\'s center by RenderTransformOrigin=\"0.5,0.5\". Now I would like to move the textblock based on the refere

2条回答
  •  忘掉有多难
    2020-12-21 18:28

    Maybe you need this

    void MoveToPoint(UIElement sender, Point point)
    {
        Canvas.SetLeft(sender, point.X - sender.RenderTransformOrigin.X * sender.ActualWidth);
        Canvas.SetTop(sender, point.Y - sender.RenderTransformOrigin.Y * sender.ActualHeight);
    }
    

    to Xaml (patern MVVM): you need write converter and for properties Canvas.Left and Canvas.Top use Binding. It's more code than previously.

    Example Converter (example 6) http://www.codeproject.com/Articles/29054/WPF-Data-Binding-Part

    In converter need send 2 parameters sender.RenderTransformOrigin.X and ActualWidth.

    Watch Converter with some params (in russian) - http://habrahabr.ru/post/141107/

提交回复
热议问题