【发布时间】:2014-08-08 21:14:44
【问题描述】:
管理员:对不起,如果我在错误的论坛上问这个问题,我是整个 SE 网络的新手。
我从事一个项目已经有一段时间了,但现在我陷入了困境。该项目是一个用 C# 和 XAML 编写的通用 Windows 8.1 运行时应用程序。下面是一个来自项目的 Windows 8.1 部分的函数,称为 updateMapGUI()。它在触发事件后调用,并将项目添加到页面上预先存在的画布中。
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[panelTracker] 中的 Canvas 不包含向上或向左的定义。我究竟做错了什么?如果不可能,我基本上需要做的是在特定的 X 和 Y 位置显示一些点。提前感谢您的回复!
【问题讨论】:
-
考虑在画布对象上添加变换。它们具有可以帮助您的 TranslateX 和 TranslateY 属性。
-
我该怎么做?我能找到的唯一例子是反向使用它来找到一个点。 (对不起,我的菜鸟问题,我对整个 XAML 和 WinRT 的东西都是新手)
标签: c# windows xaml windows-runtime wpf-controls