如何设置radio.IsChecked = true;以编程方式使用c#到特定的单选按钮

时间:2014-06-23 15:57:18

标签: c# .net silverlight radio-button ischecked

我正在研究silverlight并且我创建了一个radiobutton我想手动设置radiobutton的检查以编程方式给出3个项目(itms意味着3个radiobutton)在单选按钮上。我试过这样

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? 我尝试这样做,因为我想在程序启动后(在按钮点击之前)初始化单选按钮,因为在按钮单击单选按钮之前,如果我尝试在文本块上打印主题,我什么也看不见(它只显示在按钮上)点击但我希望在点击之前显示某些内容而不是空白空间)

1 个答案:

答案 0 :(得分: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应用程序中常见的数据绑定方法很好地融合。所选项目的初始状态应该真正存储在状态变量中。