Get position on a Canvas with Canvas.GetLeft
<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Thumb_wcp.Pane1">
<Canvas Width="100" Height="100" Name="myCanvasStretch">
<TextBox Name="changes"
Width="{Binding ElementName=myCanvasStretch,Path=Width}"
Height="{Binding ElementName=myCanvasStretch,Path=Height}"
Text="Size: 100, 100"/>
<Thumb Name="myThumb" Canvas.Left="80" Canvas.Top="80" Background="Blue"
Width="20" Height="20" DragDelta="onDragDelta"/>
</Canvas>
</Canvas>
//File:Window.xaml.cs
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Documents;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Data;
using System.Windows.Media;
namespace Thumb_wcp
{
public partial class Pane1 : Canvas
{
void onDragDelta(object sender, DragDeltaEventArgs e)
{
double yadjust = myCanvasStretch.Height + e.VerticalChange;
double xadjust = myCanvasStretch.Width + e.HorizontalChange;
if ((xadjust >= 0) && (yadjust >= 0))
{
myCanvasStretch.Width = xadjust;
myCanvasStretch.Height = yadjust;
Canvas.SetLeft(myThumb, Canvas.GetLeft(myThumb) + e.HorizontalChange);
Canvas.SetTop(myThumb, Canvas.GetTop(myThumb) + e.VerticalChange);
Console.WriteLine(myCanvasStretch.Width);
Console.WriteLine(myCanvasStretch.Height);
}
}
}
}
Related examples in the same category