我在运行时将项目添加到ListView。
OnClick按钮将一个TextBlock添加到ListView。这是代码:
private async void addPlayerButton_Click(object sender, RoutedEventArgs e)
{
Grid g = new Grid();
ColumnDefinition c1 = new ColumnDefinition();
ColumnDefinition c2 = new ColumnDefinition();
c1.Width = new GridLength(0, GridUnitType.Auto);
c2.Width = new GridLength(0, GridUnitType.Auto);
g.ColumnDefinitions.Add(c1);
g.ColumnDefinitions.Add(c2);
PlayersName dialog2 = new PlayersName();
var result2 = await dialog2.ShowAsync();
if(result2 == ContentDialogResult.Primary)
{
RowDefinition ri = new RowDefinition();
ri.Height = new GridLength(0, GridUnitType.Auto);
g.RowDefinitions.Add(ri);
TextBlock label = new TextBlock();
TextBlock counter = new TextBlock();
counter.Text = "0";
label.Text = dialog2.Text;
g.Children.Add(label);
g.Children.Add(counter);
Grid.SetRow(label, 0);
Grid.SetColumn(label, 0);
Grid.SetRow(counter, 1);
Grid.SetColumn(counter, 1);
}
list.Items.Add(g);
}
所有这一切都能正常运作。
但是,我怎么能在以后更改Text的值,让我们说,控制命名计数器?我必须从另一个函数执行此操作,而且,看起来我有多个名为counter的控件,因为每次单击一个按钮(addPlayerButton_Click)时,都会添加counter
的实例。
如何跟踪运行时添加的控件?
答案 0 :(得分:0)
您有多个控件,其引用的本地变量名称为counter
。请注意,这并不意味着您有多个名称为counter
的控件。一种选择是给每个人一个名字(每次都不同),比如
counter.Name = "something"
或者将它们放在一个共同的父母身上,比如Panel。您还可以创建类级变量(列表,字典或类似)。每次单击一个按钮,都会添加对它的本地引用。