鼠标单击位置周围出现的按钮

科技

我正在创建一个简单的WPF应用程序,其中的核心功能之一是,无论用户在主窗口内的网格上单击的位置如何,都应在单击位置周围出现许多按钮。现在,我尝试仅用1个按钮来实现此目的。我知道我必须捕获鼠标的当前位置,然后通过创建Thickness-es的新实例来修改按钮的Margin(左,上,右,下)的4个参数。

我设法为Margins创建了新的Thickness-es,将left和top参数分别设置为鼠标的X和Y坐标,但是我不知道如何计算或将其用作右边和底部的参数。新创建的保证金。这是来自xaml.cs的相关功能(有问题的值表示为0-s,并且网格旨在引用网格):

private void Grid_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
        {
            var mouseLocation = PointToScreen(Mouse.GetPosition(grid));
            RandomButton.Margin = new Thickness(mouseLocation.X, mouseLocation.Y, 0, 0);
        }

这是xaml的相关部分:

<StackPanel>
   <Button
     Name="RandomButton"
     Height="30"
     Width="30"
     Background="#FF130889"
     Click="RandomButton_Click"
     Content="RandomContent" />
</StackPanel>

还值得一提的是,当按钮的Horizo​​ntalAlignment设置为Left且VerticalAlignment设置为top时,此按钮似乎可以完成我的设置,但仅当windowsize已满时。

我想我必须使用窗口或网格的实际高度,但是我不知道如何使用。我知道这很简单,但是我刚开始使用WPF,所以我很高兴能提供任何帮助!

麦可

据我了解,问题在于确定点击的相对位置。在这种情况下,可以使用Mouse.GetPosition方法。

这是带有的示例Canvas

        private void SetPos()
        {
            var relativePosition = Mouse.GetPosition(this.MainCanvas);
            Canvas.SetLeft(this.btn1, relativePosition.X);
            Canvas.SetTop(this.btn1, relativePosition.Y);
            btn1.Visibility = Visibility.Visible;
        }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章