我正在构建的其中一个应用程序需要为用户构建调查。与我的问题相关的相关课程是:
Survey (string Description, List<Questions> Questions, QuestionTypes Type)
Question (string Description, List<Choice> Choices)
Choice (string Description)
enum QuestionTypes {MultipleChoicesOneAnswer, MultipleChoicesMultipleAnswers}
在ListBox中,我想在自己的边框中显示每个问题以及每个问题的可用选项。像这样:
1)一天有几个小时?
[] 21
[] 22
[] 23
[] 24
的
上面的括号代表一个单选按钮(如果问题类型是“MultipleChoicesOneAnswer”)或复选框(对于类型为“MultipleChoicesMultipleAnswers”的问题)
我使用以下模板:
<DataTemplate x:Key="MultipleChoicesOneAnswerTemplate" DataType="{x:Type local:Choice}">
<RadioButton Content="{Binding Description}" Foreground="Blue" />
</DataTemplate>
<DataTemplate x:Key="QuestionTemplate" DataType="{x:Type local:Question}">
<DockPanel>
<StackPanel Orientation="Horizontal" DockPanel.Dock="Top">
<TextBlock Text="{Binding SortingIndex}" />
<TextBlock Text=")" />
<TextBlock Text="{Binding Description}" Margin="5,0,0,0"/>
</StackPanel>
<ListBox ItemTemplate="{StaticResource MultipleChoicesOneAnswerTemplate}" ItemsSource="{Binding Choices}"/>
</DockPanel>
</DataTemplate>
使用这些模板,每个选项都会得到一个RadioButton,但每个问题并不相互排斥。
我的问题是:
1.如何使模板生成的RadioButtons互斥? 2.如何将用户选择的选项录制到我的模型中?
非常感谢你的帮助。
更新 遵循csunwold的建议,它使用GroupName,但感觉有点像黑客,因为我必须覆盖在问题类上吐出描述的ToString()并且做了GroupName =“{Binding Question}”。
其他人有什么建议吗?
答案 0 :(得分:2)
让你想要的单选按钮相互删除相同的GroupName属性。您可以将此记录到模型中,但创建一个枚举类型,每次检查一个单选按钮时都会更新。