我想开发一个可以动态添加控件的编辑器,然后移动,调整大小或旋转以使用此UIElements构建一个窗口。
我的问题是谁更适合这个UIElements,Grid或Canvas的容器?
Canvas正处于绝对位置,可能具有更好的转换精度。但是当我以不同的屏幕分辨率显示应用程序时响应性会降低?我不太了解Grid或Canvas的优点/缺点。
我用Canvas和Grid做了一个例子,用这段代码移动UIElement:
private void ui_MouseMove(object sender, MouseEventArgs e)
{
if (m_IsPressed)
{
UIElement ui = (UIElement)sender;
TranslateTransform transform = new TranslateTransform();
transform.X = Mouse.GetPosition(MyGridOrCanvas).X;
transform.Y = Mouse.GetPosition(MyGridOrCanvas).Y;
ui.RenderTransform = transform;
}
}
但是使用Canvas或Grid,当我单击UIElement而不移动时,UIElement总是从我的光标移动x,y。也许这不是最好的方法。 如果您还有关于如何构建此功能的教程也会对我有帮助。我对这些东西很新。
非常感谢和问候!
答案 0 :(得分:0)
我将以it is likely to be closed by the community here for being too subjective为这个问题提供一个简短的答案。我已经可以看到一次近距离投票。
所以,在我看来,Canvas
是一个更好的控制用于此目的。出于一个原因,它没有Grid
的相当大的布局要求,因此效率更高。另一个主要原因是使用Canvas.Top
和Canvas.Left
属性来移动项目是完美的......要在其他Panel
中移动项目,您通常需要设置相反,Margin
属性,这远非理想。
至于你点击时移动的物品...这只是你的代码中的一个错误,它是不正常的行为 - 除非我们告诉你,否则控件不会自行移动它来。