c#设置动态创建按钮的名称,以便稍后调用

时间:2016-03-26 14:39:14

标签: c# wpf button

如何在c#中创建按钮名称,以便稍后调用它?

我有一个字符串列表(命令)。

我循环遍历它,为列表中的每个项目创建一个按钮。

       commands.ForEach(delegate (String i)
        {


            Button button = new Button()
            {
                Name = i,
                Tag = i,
                MaxWidth = 50,
                MaxHeight = 50,
                BorderBrush = null
            };


            button.Click += new RoutedEventHandler(button_Click);
            this.grid.Children.Add(button);

            Uri resourceUri = new Uri("led_Off.png", UriKind.Relative);
            StreamResourceInfo streamInfo = Application.GetResourceStream(resourceUri);

            BitmapFrame temp = BitmapFrame.Create(streamInfo.Stream);
            var brush = new ImageBrush();
            brush.ImageSource = temp;

            button.Background = brush;

        });

此循环正常工作,直到我添加该行 Name = i

我正处于创建这些按钮的位置,现在我需要更改一些背景图像。 有没有更好的方法来称呼他们呢?

2 个答案:

答案 0 :(得分:0)

名称应为有效字符串:尝试Name = "button" + i.ToString()(仅供参考,Button Name不能只是“1”,它是无效的名称)。另外,Tag =i.ToString()。希望这可能会有所帮助

答案 1 :(得分:0)

不要这样做,请将data bindingdata templatingcommands一起使用。

没有理由在WPF循环中创建任何UI元素。

修改:Just this.