2

我正在研究silverlight,我创建了一个单选按钮,我想以编程方式手动设置单选按钮检查单选按钮上给定的3个项目(itms表示3个单选按钮)。我试过这样

RadioButton radio = new RadioButton();

假设这个单选按钮包含“项目(单选按钮),当我尝试下面的代码来检查第二个项目(共 3 个项目)时,下面的代码会检查最后一个项目。

radio.Loaded += (p, q) =>
{       
       radio.IsChecked = true;
};

我如何创建按钮是:

foreach (String item in param.Component.Attributes[0].Item)
            {
                radio = new RadioButton()
                {
                    Content = item,
                    GroupName = "MyRadioButtonGroup",
                    Tag = tg

                };
 radio.Checked += (o, e) =>
                {
                    //Do  something                
                };

                sp.Children.Add(radio);
                count++; tg++;              
            }

为什么要检查最后一项?如何在 c# 代码中使用 silverlight 以编程方式检查第二项?我尝试这样做是因为我想在程序启动后(在单击按钮之前)初始化单选按钮,因为在单击单选按钮之前,如果我尝试在文本块上打印项目,我什么也看不到(它只显示在按钮上点击,但我希望在点击之前显示一些东西而不是空白)

4

1 回答 1

2

对您的问题的简短回答是您radio.IsChecked=true在代码中设置以检查 RadioButton。

解决此问题的一种方法是在添加第二个单选按钮时设置 IsChecked = true。由于您的代码在 foreach 循环中,因此您的 count 变量应该可以工作。

   foreach (String item in param.Component.Attributes[0].Item)
            {
                radio = new RadioButton()
                {
                    Content = item,
                    GroupName = "MyRadioButtonGroup",
                    Tag = tg

                };
 radio.Checked += (o, e) =>
                {
                    //Do  something                
                };

                sp.Children.Add(radio);
                count++; tg++;   
                if (count == 2){
                radio.IsChecked=true;
                }
            }

或者您可以将 foreach 循环更改为 for 循环

for (int i = 0; i < param.Component.Attributes[0].Item.Count ; i++)
      {

      }


if (i== 2){
     radio.IsChecked=true;
   }

虽然这两种方法都有效,但它们不能很好地与大多数 Silverlight 应用程序中常见的数据绑定方法相结合。所选项目的初始状态实际上应该存储在状态变量中。

于 2014-06-24T22:25:53.377 回答