获取组中所选RadioButton的索引
我有一个RadioButton rb1的引用。
如何在rb1的组中获取所选RadioButton的索引?
我用Google搜索了一段时间但没有成功。
任何帮助将不胜感激
如果你到了这一点,那么你的设计可能有问题,你应该重新考虑它。
据说你可以遍历视觉树并找到它:
/// Returns the first GroupBox ancester public DependencyObject FindAncestor(DependencyObject current) { current = VisualTreeHelper.GetParent(current); while (current != null) { if (current is GroupBox) { return (T)current; } current = VisualTreeHelper.GetParent(current); }; return null; }
然后仔细检查孩子们,找到已检查的radioButton
public RadioButton FindChild(DependencyObject parent) { // Confirm parent and childName are valid. if (parent == null) return null; RadioButton foundChild = null; int childrenCount = VisualTreeHelper.GetChildrenCount(parent); for (int i = 0; i < childrenCount; i++) { var child = VisualTreeHelper.GetChild(parent, i); // If the child is not of the request child type child var childType = child as radioButton; if (childType == null) { // recursively drill down the tree foundChild = FindChild(child); // If the child is found, break so we do not overwrite the found child. if (foundChild != null) return foundChild ; } else if (childName.IsChecked == true) { return foundChild; } } return null; }
你的问题很简短,你不是。 你应该做的是将RadioButton.IsChecked
绑定到视图模型的某个bool
属性。 您可以通过IValueConverter
的实现IValueConverter
视图模型的int
属性来实现组索引之类的操作:
查看模型属性:
private int _groupIndex = 1; public int GroupIndex { get { return _groupIndex; } set { if (_groupIndex == value) return; _groupIndex = value; OnPropertyChanged("GroupIndex"); } }
转换器:
public class IndexBooleanConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value == null || parameter == null) return false; else return (int)value == System.Convert.ToInt32(parameter); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { if (value == null || parameter == null) return null; else if ((bool)value) return System.Convert.ToInt32(parameter); else return DependencyProperty.UnsetValue; } }
然后你像这样绑定它:
在这种情况下,视图模型属性GroupIndex
将具有值1,2或3,具体取决于选中的RadioButton
- 在单独的数据访问和业务逻辑层中,我可以在业务层中使用Entity框架类吗?
- entity framework查询中令人难以置信的重复
- 传入的请求包含太多参数。 服务器最多支持2100个参数
- createprocess中的Process.arguments?
- ‘无法加载文件或程序集’netstandard,Version = 2.0.0.0,…’。 不应加载引用程序集以执行
- PostMessage WM_KEYDOWN发送乘法键?
- 从C#启动电子邮件应用程序(MAPI)(带附件)
- Convert.ToDateTime(bool)有什么意义?
- 如何正确捕获WinForms应用程序中的所有未处理的exception