Как установить радио.IsChecked = true; для конкретной радиопереключателя программно с помощью C#

Я работаю над 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++;              
            }

Почему проверяет последний пункт? Как проверить второй пункт программно, используя silverlight в коде C#? Я пытаюсь сделать это, потому что хочу инициализировать переключатель после запуска программы (до нажатия кнопки), потому что при нажатии кнопки переключателя до нажатия кнопки, если я пытаюсь напечатать элементы текста в текстовом блоке, я ничего не вижу (он отображается только на кнопке). щелкает, но я хочу, чтобы что-то отображалось до нажатия вместо пустого места)

1 ответ

Краткий ответ на ваш вопрос: 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. Начальное состояние выбранных элементов действительно должно храниться в переменной состояния.

Другие вопросы по тегам