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:非常感谢你的帮助和意见!