我正在开展一个显示调查答案的小项目。我有一个问题显示选项问题的答案。
正如您在下面的xaml提取中所看到的,我正在尝试按答案ID对单选按钮进行分组,因此每个答案对象只选择一个选项。
但是,下面的代码将整个调查中的所有单选按钮视为一个大型无线电按钮组的一部分,并且只允许为所有问题选择一个选项。
比方说,我有两个显示答案(-
=未选中,+
=已选中):
我期待这样的事情:
正确答案为:
-Option1 - Option2 + Option3
ANSWER2:
-Option1 + Option2 - Option3
但下面的xaml代码只允许我从两个问题中选择一个值而不是强制每个问题的互斥性。
<ItemsControl ItemsSource="{Binding Options}">
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
<ItemsControl.ItemTemplate>
<DataTemplate>
<RadioButton GroupName="{Binding AnswerId}" Content="{Binding Option}" IsChecked="{Binding IsSelected, Mode=OneWay}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
答案 0 :(得分:1)
我使用您的Xaml和以下代码创建了一个测试,它工作正常(允许从每组3个答案中选择一个):
您是否在绑定前创建了所有答案选项?看起来GroupName不是依赖属性。
using System.Collections.Generic;
namespace PersonTests
{
public class QuestionTestViewModel
{
public IEnumerable<AnswerOption> Options { get; set; }
public QuestionTestViewModel()
{
this.Options = new List<AnswerOption>()
{
new AnswerOption(){AnswerId = 1, Option = "One A", IsSelected = false},
new AnswerOption(){AnswerId = 1, Option = "One B", IsSelected = false},
new AnswerOption(){AnswerId = 1, Option = "One C", IsSelected = false},
new AnswerOption(){AnswerId = 2, Option = "Two A", IsSelected = false},
new AnswerOption(){AnswerId = 2, Option = "Two B", IsSelected = false},
new AnswerOption(){AnswerId = 2, Option = "Two C", IsSelected = false}
};
}
}
public class AnswerOption
{
public int AnswerId { get; set; }
public string Option { get; set; }
public bool IsSelected { get; set; }
}
}
答案 1 :(得分:0)
你是否可以发布你绑定的对象/类定义,关于数据结构如何工作有点不清楚。我已经建立了一份Silverlight问卷,也有类似的挑战......