与菜单共存时的 Canvas Y 坐标

Canvas Y coordinates when coexist with menu

提问人:Krzysztof Kr 提问时间:11/8/2023 最后编辑:Krzysztof Kr 更新时间:11/8/2023 访问量:27

问:

这是我的第一个问题。

我有这个xml代码:

<DockPanel LastChildFill="True" >
    
    <Menu DockPanel.Dock="Top">
        <MenuItem Header="_Plik">
            <MenuItem Header="_Zapisz" Click="MenuItem_Click"/>
            <MenuItem Header="_Otwórz" Click="MenuItem_Click_1"/>
        </MenuItem>
    </Menu>

    <Canvas x:Name="myCanvas" MouseDown="myCanvas_MouseDown" MouseMove="myCanvas_MouseMove" DockPanel.Dock="Top" ClipToBounds="True">
        <Canvas.Background>
            <SolidColorBrush Color="White" Opacity="100"/>
        </Canvas.Background>
    </Canvas>
</DockPanel>
        private void myCanvas_MouseMove(object sender, MouseEventArgs e)
        {
            if(e.LeftButton == MouseButtonState.Pressed)
            {
                Point newPoint = new Point();


                newPoint = e.GetPosition((this)); // <-wrong Y coordinates

                Line myLine = new Line();
                myLine.Stroke = Brushes.Red;

                myLine.X1 = currentPoint.X;
                myLine.Y1 = currentPoint.Y;
                myLine.X2 = newPoint.X;
                myLine.Y2 = newPoint.Y;
                currentPoint = newPoint;
                myCanvas.Children.Add(myLine);
            }
            
        }

在myCanvas_MouseMove中,当我单击大约 18 或 0 个 Y 坐标时,我得到大约 1 像素的 Y 位置。为什么在我的情况下菜单移动画布 Y 坐标?

C# .NET WPF

评论

0赞 emoacht 11/8/2023
你确定“这个”就是那个 Canvas 吗?如果在 Window 上定义该事件处理程序,则“this”就是该 Window。
0赞 Krzysztof Kr 11/8/2023
大师!!!....解决了:)谢谢

答: 暂无答案