以编程方式设置Canvas中UI元素的X和Y坐标

时间:2014-08-08 21:14:45

标签: c# windows xaml windows-runtime wpf-controls

管理员:对不起,如果我在错误的论坛上问过这个问题,我是整个SE网络的新手。

我已经在一个项目上工作了一段时间,现在我被卡住了。该项目是一个用C#和XAML编程的通用Windows 8.1运行时应用程序。下面是一个名为updateMapGUI()的项目的Windows 8.1部分的函数。在触发事件后调用它并将项目添加到页面上预先存在的画布。

private void updateMapGUI()
{
    while (mapCanvas.Children.Count > 0)
    {
        mapCanvas.Children.RemoveAt(0);
    }
    panelTracker = 0;
    foreach (User i in activeUsers)
    {
        if(i == null)
        {
            return;
        }
        else
        {
            //Update the mapCanvas with data from the appropriate User object from the array activeUsers[]
            dotpanels[panelTracker] = new Canvas();
            mapCanvas.Children.Add(dotpanels[panelTracker]);
            dotpanels[panelTracker].Height = 3;
            dotpanels[panelTracker].Width = 3;
            dotpanels[panelTracker].Left = getXOffset(i);
            dotpanels[panelTracker].Up = getYOffset(i);
            if (i.isSelected == false)
            {
                SolidColorBrush unselectedDot = new SolidColorBrush(Windows.UI.Colors.Blue);
                dotpanels[panelTracker].Background = unselectedDot;
            }
            else
            {
                SolidColorBrush selectedDot = new   SolidColorBrush(Windows.UI.Colors.Green);
                dotpanels[panelTracker].Background = selectedDot;
            }
            panelTracker++;
        }
    }
}

dotpanels是一个canvas []数组,panelTracker是一个int []数组。问题在于dotpanels [panelTracker] .Left和dotpanels [panelTracker] .Up。根据文档,可以在画布的任何子节点上调用此函数(不太确定我是否正确读取)。编译器说dotpanels中的Canvas [panelTracker]不包含Up或Left的定义。我究竟做错了什么?如果不可能,我基本上需要做的是在特定的X和Y位置显示一些点。提前感谢您的回复!

1 个答案:

答案 0 :(得分:0)

Canvas.LeftCanvas.Top(不是Up)是attached properties,可以通过静态getter和setter方法在代码中访问:

Canvas.SetLeft(dotpanels[panelTracker], getXOffset(i));
Canvas.SetTop(dotpanels[panelTracker], getYOffset(i));