На что вам нужно обратить внимание - это обработчик события LayoutUpdated для canvas.
Прежде всего вам нужно сохранить значение верхнего поля в отдельном поле / свойстве.
double top = 0;
top = YourCanvas.Margin.Top;
Затем в обработчике событий LayoutUpdated вы можете проверить, было ли изменено поле:
void LayoutRoot_LayoutUpdated(object sender, EventArgs e)
{
if (LayoutRoot.Margin.Top != top)
{
// Your action here
Debug.WriteLine("CHANGED!");
}
}