我有点卡在我目前的项目。MVVM获取控制位置
我正在使用一个可怕的API,需要在任何给定时间告知何时何地绘制。此API不公开任何控件,我需要一个控件才能正确放置绘制的对象。
我所做的是我在我的视图中在我的网格中放置了一个画布。这个画布占据了我绘制的API元素需要占用的空间。所以,通过获取画布实际宽度和实际高度,我可以绘制出适当大小的API元素。我遇到的问题是API元素的位置。 Canvas在任何时候都处于适当的位置,但是当程序第一次启动时,Canvas.TranslatePoint(new System.Windows.Point(0,0),App.Current.MainWindow);返回0,0。只要我操作UI并导致Canvas调整大小,位置函数就会返回真实位置,并且我的API元素将绘制在合适的位置。我的问题是为什么最初的位置是0?我该如何补救?我从UserControl_Loaded事件调用初始绘图函数。
谢谢
P.S.我认为最初的0,0是相对坐标而不是绝对坐标是否会错误?
我使用这个函数来获取地点: 'System.Windows.Point位置= WaveformCanvas.TranslatePoint(新System.Windows.Point(0,0),App.Current.MainWindow);' 然而,这个函数声称这两个元素不共享一个共同的祖先: 'location = WaveformCanvas.TransformToVisual(App.Current.MainWindow).Transform(new System.Windows.Point(0,0));' 但是after第一次调用这个函数时,二者确实共享一个共同的祖先。 –