Get position on a Canvas with Canvas.GetLeft
<UserControl x:Class='SilverlightApplication3.MainPage'
xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
xmlns:d='http://schemas.microsoft.com/expression/blend/2008'
xmlns:mc='http://schemas.openxmlformats.org/markup-compatibility/2006'
mc:Ignorable='d'
d:DesignWidth='640'
d:DesignHeight='480'>
<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>
</UserControl>
//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.Shapes;
using System.Windows.Data;
using System.Windows.Media;
namespace SilverlightApplication3
{
public partial class MainPage : UserControl
{
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