silverlight中RadioButton在DataGrid的单选
与之前的silverlight中CheckBox在DataGrid的全选/取消 一样很在编程的中经常用到RadioButton控件用于在DataGrid或Repeater控件中的数据选择
在此与各位分享RadioButton的用法 如果还有好方法,望留言相互学习:
demo 如下
XAML 为
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="20"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="30"/>
</Grid.RowDefinitions>
<data:DataGrid x:Name="ContentGrid" Grid.Row="1" AutoGenerateColumns="False">
<data:DataGrid.Columns>
<data:DataGridTemplateColumn Header="选择">
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<RadioButton x:Name="ck" HorizontalAlignment="Center" Click="ck_Click" Tag="{Binding ID}" GroupName="SelectedItem"></RadioButton>
</StackPanel>
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>
<data:DataGridTextColumn Header="编号" Binding="{Binding ID}" />
<data:DataGridTextColumn Header="名称" Binding="{Binding Name}" />
<data:DataGridTextColumn Header="年龄" Binding="{Binding age}" />
<data:DataGridTextColumn Header="性别" Binding="{Binding sex}" />
<data:DataGridTextColumn Header="时间" Binding="{Binding AddTime}" />
</data:DataGrid.Columns>
</data:DataGrid>
<Button Content="查看选中项" Grid.Row="2" Width="60" Click="Button_Click"></Button>
</Grid>
cs
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
public partial class RadioBtnTest : UserControl
{
public RadioBtnTest()
{
InitializeComponent();
}
//查看选中项
private void Button_Click(object sender, RoutedEventArgs e)
{
string strID = "";
foreach (object ovj in ContentGrid.ItemsSource)
{
RadioButton cb1 = ContentGrid.Columns[0].GetCellContent(ovj).FindName("ck") as RadioButton;
if (cb1.IsChecked.Value)
strID = cb1.Tag.ToString();
}
if (strID != "")
HtmlPage.Window.Alert("你选中学生ID号有" + strID);
else
HtmlPage.Window.Alert("请选择学生");
}
public List<student> SetStudentInfo()
{
List<student> studentinfo = new List<student>();
studentinfo.Add(new student { ID = 1, Name = "test1", age = 22, sex = "男", AddTime = "1987-01-09" });
studentinfo.Add(new student { ID = 2, Name = "李四", age = 22, sex = "男", AddTime = "1981-11-6" });
studentinfo.Add(new student { ID = 3, Name = "王五", age = 22, sex = "男", AddTime = "2001-01-9" });
studentinfo.Add(new student { ID = 4, Name = "小林", age = 22, sex = "女", AddTime = "1985-03-12" });
studentinfo.Add(new student { ID = 5, Name = "小金", age = 22, sex = "男", AddTime = "1989-01-21" });
studentinfo.Add(new student { ID = 6, Name = "小吴", age = 22, sex = "女", AddTime = "1984-08-5" });
studentinfo.Add(new student { ID = 7, Name = "小王", age = 22, sex = "男", AddTime = "1983-07-09" });
studentinfo.Add(new student { ID = 8, Name = "可耕地", age = 22, sex = "男", AddTime = "1986-09-10" });
studentinfo.Add(new student { ID = 9, Name = "测试", age = 22, sex = "男", AddTime = "1988-11-09" });
return studentinfo;
}
public struct student
{
public int ID { get; set; }
public string Name { get; set; }
public int age { get; set; }
public string sex { get; set; }
public string AddTime { get; set; }
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
ContentGrid.ItemsSource = SetStudentInfo();
}
private void ck_Click(object sender, RoutedEventArgs e)
{
foreach (object ovj in ContentGrid.ItemsSource)
{
RadioButton cb1 = ContentGrid.Columns[0].GetCellContent(ovj).FindName("ck") as RadioButton;
cb1.IsChecked = false;
}
RadioButton rbtn = sender as RadioButton;
rbtn.IsChecked = true;
}
}