silverlight – ItemsControl中的多个RadioButton组

我正在开展一个显示调查答案的小项目.我有一个问题显示选项问题的答案.

正如您在下面的xaml提取中所看到的,我正在尝试按答案ID对单选按钮进行分组,因此每个答案对象只选择一个选项.

但是,下面的代码将整个调查中的所有单选按钮视为一个大型无线电按钮组的一部分,并且只允许为所有问题选择一个选项.

比方说,我有两个显示答案( – =未选中,=已选中):

我期待这样的事情:

正确答案为:

-Option1 – Option2 Option3

ANSWER2:

-Option1选项2 – 选项3

但是下面的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>

解决方法

我使用您的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",Option = "One C",new AnswerOption(){AnswerId = 2,Option = "Two A",Option = "Two B",Option = "Two C",IsSelected = false}
                            };
        }
    }

    public class AnswerOption
    {
        public int AnswerId { get; set; }
        public string Option { get; set; }
        public bool IsSelected { get; set; }
    }
}

相关文章

如何在Silverlight4(XAML)中绑定IsEnabled属性?我试过简单的...
我正在编写我的第一个vb.net应用程序(但我也会在这里标记c#,...
ProcessFile()是在UIThread上运行还是在单独的线程上运行.如...
我从同行那里听说,对sharepoint的了解对职业生涯有益.我们不...
我正在尝试保存一个类我的类对象的集合.我收到一个错误说明:...
我需要根据Silverlight中的某些配置值设置给定控件的Style.我...