如何在MAUI动态测试设计器中按问题分组RadioButton
问题出在你把RadioButtonGroup.GroupName设到了LinearItemsLayout上——这个布局是整个CollectionView的容器,所有Question的RadioButton都会继承同一个GroupName,自然没法按单个Question分组。正确的做法是给每个Question绑定独立的GroupName,具体步骤如下:
第一步:给你的Question模型添加唯一标识属性,用Guid保证唯一性:
public class Question { public Guid QuestionId { get; set; } = Guid.NewGuid(); // 其他属性:QuestionText、Options集合、QuestionType等 }第二步:修改页面级的DataTemplate,把RadioButton的GroupName绑定到当前Question的
QuestionId,而不是布局容器:<DataTemplate x:Key="RadioOptionTemplate" x:DataType="models:Option"> <RadioButton Content="{Binding OptionText}" IsChecked="{Binding IsSelected}" RadioButtonGroup.GroupName="{Binding Source={RelativeSource AncestorType={x:Type models:Question}}, Path=QuestionId}" /> </DataTemplate>第三步:移除之前在
LinearItemsLayout上设置的RadioButtonGroup.GroupName,避免全局分组覆盖。
原理很直接:每个Question有自己唯一的QuestionId,绑定后该Question下的所有RadioButton都会共享这个GroupName,实现单个Question内的单选逻辑,不同Question之间的RadioButton因为GroupName不同,互不干扰。
测试验证:现在每个Question里选RadioButton时,只会在当前Question内互斥,不同Question的选项可以同时选中,这就是你需要的效果。
内容的提问来源于stack exchange,提问作者Kowari
相关产品推荐
相关产品推荐

