WPF-如何使DataTemplate生成的单选按钮相互排斥?

WPF-如何使DataTemplate生成的单选按钮相互排斥?,wpf,xaml,listbox,radio-button,datatemplate,Wpf,Xaml,Listbox,Radio Button,Datatemplate,我正在开发的一个应用程序需要为用户进行调查。与我的问题相关的课程有: Survey (string Description, List<Questions> Questions, QuestionTypes Type) Question (string Description, List<Choice> Choices) Choice (string Description) enum QuestionTypes {MultipleChoicesOneAnswer

我正在开发的一个应用程序需要为用户进行调查。与我的问题相关的课程有:

 Survey (string Description, List<Questions> Questions, QuestionTypes Type)
 Question (string Description, List<Choice> Choices)
 Choice (string Description)
 enum QuestionTypes {MultipleChoicesOneAnswer, MultipleChoicesMultipleAnswers}
调查(字符串描述、问题列表、问题类型)
问题(字符串描述,列表选项)
选项(字符串描述)
枚举问题类型{multiplechicessoneanswer,multiplechicesmultipleanswers}
在列表框中,我想在每个问题的边框中显示每个问题以及每个问题的可用选项。像这样:
1) 一天有多少小时?
[]21
[]22
[]23
[]24

上面的括号表示单选按钮(如果问题类型为“MultipleChiesSoneAnswer”)或复选框(对于“MultipleChiesMultipleAnswers”类型的问题)

我正在使用以下模板:

<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>

有了这些模板,我可以为每个选项设置一个单选按钮,但它们并不是每个问题都相互排斥的

我想问你的问题是: 1.如何使模板生成的单选按钮相互排斥?
2.我如何将用户选择的选项录制到我的模型中

非常感谢你的帮助

更新: 根据csunwold的建议,它通过使用GroupName工作,但感觉有点像黑客,因为我必须在吐出描述的问题类上重写ToString(),并执行GroupName=“{Binding Question}”


其他人有什么建议吗?

使用相同的GroupName属性为您想要相互排斥的单选按钮提供建议。您可能会将其记录到模型中,但创建一个枚举类型,每次选中一个单选按钮时都会更新该类型。

如何从数据模板中获取组名?谢谢@Gustavo:不确定这是否有效,但您可以尝试GroupName=“{Binding Description}”csunhold,Binding Description没有意义,因为每个选项描述可能都是唯一的。使用您的想法,我尝试了:1)GroupName=“{Binding Question,Path=Description}”(因为Choice有一个指向“master”问题的属性)。这不起作用,我也不知道为什么,因为如果我将RadioButton的内容绑定到它,它会正确地显示问题描述)2)我在吐出描述的问题类上重写了ToString,并执行了GroupName=“{Binding question}”,它起了作用。这真的感觉像一个黑客。它可能会有这种感觉,但我越想它实际上是有意义的。在使用此类模型时,我不得不对ToString进行大量重写。我开始认为,作为一种普遍做法,在使用此类模型时,我应该始终忽略ToString,但我很想听听在这方面有更多经验的人的意见。很高兴听到你让它工作了。@csunhold:非常感谢你的帮助和意见!