WPF移动canvas超出控件边界

我在自制一个动态曲线的控件,usercontrol中我画了一个canvas,通过dispatchertimer触发向左移动

        public void CollectionStart()
        {
            if (ExitDt)
            {
                dt.IsEnabled = true;
            }
            else
            {
                dt.Interval = TimeSpan.FromMilliseconds(20);
                dt.Tick += Dt_Tick;
                dt.IsEnabled = true;
                ExitDt = true;
            }
        }
        private void Dt_Tick(object sender, EventArgs e)
        {
            testx = testx - 1;
            this.xGrid.Margin = new Thickness(testx, 0, 0, 0);
            this.myCanvas.Margin = new Thickness(testx, 0, 0, 0);

        }
        public void CollectionStop()
        {
            dt.IsEnabled = false;
        }

我通过主窗口调用这两个方法来控制移动的开始和停止
但是我定义的这个控件中的canvas和grid每次都会移动超过边界,并且覆盖到隔壁的控件上
如何才能让控件中的canvas移动到控件自己的边界后,超出的部分消失呢?