0


目前,我正在 Microsoft Surface 上工作,主要创建一个基于数据库动态创建 ScatterViewItems 的应用程序(尽管未绑定,原因对问题并不重要。)当我尝试将名称注册到 SVI 时,我的问题就出现了在将其放入控件之前的 ScatterView。

声明名称范围:

NameScope.SetNameScope(ActionArea, new NameScope());

创建/分配 SVI 名称

foreach(KeyValuePair<int,Node> i in nodes)
{
    ScatterViewItem item = new ScatterViewItem();
    item.Content = i.Value.Argument;
    item.Tag = i.Value;
    ActionArea.RegisterName("NodeID" + i.Key.ToString(), item);
    ActionArea.Items.Add(item);
}

以后叫这个名字

ScatterViewItem to = (ScatterViewItem)ActionArea.FindName(name); 

调用此方法时,FindName 返回 null。由此(并查看 SVI 的 Name 属性),我只能得出结论,我分配的名称是错误的。

那么如何给以编程方式创建的对象命名呢?

4

1 回答 1

0

不要担心 NameScope - 很少需要。

foreach(KeyValuePair<int,Node> i in nodes)
{    
   ScatterViewItem item = new ScatterViewItem();    
   item.Content = i.Value.Argument;    
   item.Tag = i.Value;    
   item.Name = "NodeID" + i.Key.ToString(); // set the name property
   ActionArea.Items.Add(item);
}
于 2011-03-18T12:58:07.903 回答