Как узнать индекс выбранной радиопереключателя

1

Как узнать проиндексированный индекс переключателя, чтобы узнать, какой параметр индекса выделен пользователем.

В настоящее время мой код отображает прочитанные элементы. Но когда я выбираю элементы, которые отображаются, он показывает в текстовом блоке выбранный элемент радиообъекта (из данных 3 вариантов, потому что у моего радиообмена в настоящее время есть 3 объекта).

Моя попытка:

foreach (String item in param.Parameter[lop].Component.Attributes.Items)
{
    RadioButton radio = new RadioButton()
    {
        Content = item,
        GroupName = "MyRadioButtonGroup"
    };
    radio.Checked += (o, e) =>
    {
        txtblkShowStatus.Text = item;       
    };
    data= param.Parameter[lop].Label;
    sp.Children.Add(radio);                           
}

Теперь я хочу что-то вроде insted из "элемента", основанного на выборе теперь я хочу индексирование на основе seelction. Мне нужно что-то вроде этого. Если пользователь выбирает вторую кнопку (радиомаяка), тогда я буду отображать некоторый элемент пользовательского интерфейса. И элементы получаются при десериализации xml. Которая относится только к указателю переключателей. Так что я хочу что-то вроде if(selectedIndexofRadioButton ==IndexObtainedFromXmlInIntegr){do something}

Можно ли это сделать? Если да, то как мне изменить свой код, чтобы достичь этого? EDIT: Изменение моего кода после редактирования ответа DonBoitnott:

foreach (String item in param.Parameter[lop].Component.Attributes.Items)
                        {
                            RadioButton radio = new RadioButton()
                            {
                                Content = item,
                                GroupName = "MyRadioButtonGroup",
                                Tag=tg
                            };
                            radio.Checked += (o, e) =>
                            {
                                txtblkShowStatus.Text = item;
                                if (((Int32)((RadioButton)o).Tag).Equals(2))
                                {
                                    MessageBox.Show("hurrey");
                                }
                            };
                            radio.Tag=1;
                            data= param.Parameter[lop].Label;
                            sp.Children.Add(radio);
                            index++; tg++;
                        }
  • 0
    Не понятно, о чем вы просите. Индекс чего? Радиокнопки в группе не имеют индекса. Что не так с вашим текущим подходом?
  • 0
    @DonBoitnott DonBoitnott Я хочу что-то вроде. Если пользователь выберет 2-ю кнопку (из радиокнопки), я покажу некоторый элемент пользовательского интерфейса. И предметы получаются при десериализации XML. Который имеет дело только с индексом переключателей. Поэтому я хочу что-то вроде if (selectedIndexofRadioButton == IndexObtainedFromXmlInIntegr) {сделать что-то}
Показать ещё 4 комментария
Теги:
radio-button
silverlight
silverlight-5.0

2 ответа

2
Лучший ответ

Вы должны использовать свойство Tag объекта управления RadioButton:

foreach (String item in param.Parameter[lop].Component.Attributes.Items)
{
    RadioButton radio = new RadioButton()
    {
        Content = item,
        GroupName = "MyRadioButtonGroup",
        Tag = //integer value from XML
    };
    radio.Checked += (o, e) =>
    {
        txtblkShowStatus.Text = item;       
    };
    data = param.Parameter[lop].Label;
    sp.Children.Add(radio);                           
}

Свойством Tag является Object, поэтому вы можете назначить ему что-либо. Вам просто нужно бросить его на выход, когда вы его используете:

if (((Int32)radioButton.Tag).Equals(IndexObtainedFromXmlInInteger)
{
    //do something
}

В ответ на ваш комментарий OP:

radio.Checked += (o, e) => 
{
    txtblkShowStatus.Text = item; 
    if (((Int32)((RadioButton)o).Tag).Equals(2)) 
    {
        MessageBox.Show("hurrey");
    }
};

Вы ошибочно пытаетесь использовать radio, о чем сказано выше. Вместо этого используйте то, что фактически получает анонимный метод, o или Sender.

  • 0
    позвольте мне попробовать это. Посмотрим, если это работает
  • 0
    Может быть, вы неправильно меня поняли, я попробовал это: radio.Checked + = (o, e) => {txtblkShowStatus.Text = item; if (((Int32) radio.Tag) .Equals (2)) {MessageBox.Show ("ура"); }}; Я ОЖИДАЮ, ЧТОБЫ ПЕЧАТЬ СООБЩЕНИЕ, КОГДА ТРЕТЬЯ КНОПКА В RADIOBUTTON выбрана ... Но ничего не выскакивает.
Показать ещё 5 комментариев
0

Создайте событие, когда индекс изменяется в группе переключателей. После этого создайте отдельную функцию для десериализации файла XML. Передайте заданное целое число, полученное из вашего XML файла, в событие с измененным индексом, а затем соответствующим образом отобразите элемент пользовательского интерфейса. Не забудьте сравнить целое число на свойстве.selectedIndex вашего переключателя.

  • 0
    есть ли у радиообмена событие изменения индекса? в Сильверлигт?
  • 0
    telerik.com/help/silverlight/… Посмотрите на это. Он должен ответить на ваши вопросы о свойствах переключателя.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню