UWP / C#更改运行时添加控件的值

时间:2016-12-19 19:22:58

标签: c# scope uwp controls

我在运行时将项目添加到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的实例。

如何跟踪运行时添加的控件?

1 个答案:

答案 0 :(得分:0)

您有多个控件,其引用的本地变量名称counter。请注意,这并不意味着您有多个名称为counter的控件。一种选择是给每个人一个名字(每次都不同),比如

counter.Name = "something"

或者将它们放在一个共同的父母身上,比如Panel。您还可以创建类级变量(列表,字典或类似)。每次单击一个按钮,都会添加对它的本地引用。