如何知道所选择的radiobutton指数

时间:2014-06-13 15:38:15

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

如何知道单选按钮的选择索引,以了解用户选择的索引选项。

目前我的代码显示已读取的项目。但是当我选择出现的项目时,它会在文本块中显示出来 选定的radiobutton项目(给定3个选项,因为我的radiobutton目前有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);                           
}

现在我想要基于“项目”选择的东西,现在我想要基于索引的选择。 我想要一些像。如果用户选择第二个按钮(radiobutton),那么我将显示一些UI元素。并且这些项是在反序列化xml时获得的。其中只处理单选按钮的索引。所以我想要像if(selectedIndexofRadioButton ==IndexObtainedFromXmlInIntegr){do something}

这样的东西

有可能吗?如果是,那么我应该如何更改我的代码来实现这一目标呢? 编辑:在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++;
                        }

2 个答案:

答案 0 :(得分: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。相反,请使用匿名方法实际接收的,即oSender

答案 1 :(得分:0)

在单选按钮组上更改索引时创建事件。在此之后创建一个单独的函数来反序列化您的XML文件。将从XML文件获取的给定整数传递给索引更改事件,然后相应地显示UI元素。请务必比较单选按钮的.selectedIndex属性中的整数。