WPF中如何将DataGrid选中行数据同步显示到RadioButton?
你的代码逻辑搞反了——现在是判断RadioButton状态去取Gender值,但我们需要的是根据选中行的Gender值,来设置对应的RadioButton是否选中。下面是修改后的简单实现:
修改后的代码
private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) { DataGrid datagrid = (DataGrid)sender; DataRowView row_selected = datagrid.SelectedItem as DataRowView; if (row_selected != null) { // 同步文本框内容(这部分你原来的逻辑是对的) Name_txt.Text = row_selected["Name"].ToString(); Age_txt.Text = row_selected["Age"].ToString(); Address_txt.Text = row_selected["Address"].ToString(); // 获取选中行的性别值,根据你数据源里的实际格式调整 string gender = row_selected["Gender"].ToString().Trim(); // 根据性别值设置对应RadioButton的选中状态 rbMale.IsChecked = gender == "男" || gender == "Male"; // 匹配你的数据中男性的标识 rbFemale.IsChecked = gender == "女" || gender == "Female"; // 匹配你的数据中女性的标识 } }
关键说明
- 先从选中行提取
Gender字段的值,一定要和你数据源里的性别标识一致(比如如果数据里男性存的是数字1,就改成gender == "1") - 直接给RadioButton的
IsChecked属性赋值,就能自动选中对应按钮 - 加
.Trim()是为了避免数据里的空格导致判断出错
如果你的性别字段用布尔值存储(比如true代表男,false代表女),可以改成下面的写法:
bool isMale = (bool)row_selected["Gender"]; rbMale.IsChecked = isMale; rbFemale.IsChecked = !isMale;
内容的提问来源于stack exchange,提问作者An Lê
相关产品推荐
相关产品推荐

