Несколько групп RadioButton в ItemsControl - PullRequest
5 голосов
/ 04 июля 2011

Я работаю над небольшим проектом, который отображает ответы на опрос.У меня проблема с отображением ответов на варианты вопросов.

Как вы можете видеть из выдержки xaml ниже, я пытаюсь сгруппировать переключатель по идентификатору ответа, поэтому для каждого объекта ответа выбирается только одна опция.

Однако в приведенном ниже коде все переключатели во всем опросе рассматриваются как часть одной большой группы радиокнопок и допускается выбор только одной опции для всех вопросов.

Допустим, у меня есть2 ответа для отображения (- = не выбран, + = выбран):

Я ожидаю что-то вроде этого:

Ответ1:

-Option1 - Option2 + Option3

Ответ2:

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

Ответы [ 2 ]

1 голос
/ 04 июля 2011

Я создал тест, используя ваш Xaml и следующий код, и он отлично работает (позволяет один выбор из каждой группы из 3 ответов):

enter image description here

Вы создаете все варианты ответа перед привязкой? Похоже, 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; }
    }
}
0 голосов
/ 04 июля 2011

Не могли бы вы опубликовать определение объекта / класса, к которому вы привязываетесь, немного неясно, как работает ваша структура данных.Я построил анкету Silverlight, у меня была похожая проблема ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...