Вопрос, который у меня есть, является расширением следующего ответа. В нем указано, что имя_группы переключателя имеет очень широкую область видимости, и часто бывает лучше просто назначить имя_группы автоматически контейнером.Группа Radio Button в DataTemplate ListView
https://stackoverflow.com/a/6062697/907920
Если я использую статический GroupName, то все Radiobuttons разделяют группу. (Как ответ в указанной ссылке.)
Однако, если я не использую имя GroupName, то каждый отдельный RadioButton обрабатывается, как если бы он был в отдельной группе. Я могу только предположить, что он использует DataTemplate или CellTemplate, поскольку он является «родительским», чтобы автоматически назначать GroupName.
У меня есть список вопросов в StackPanel. Каждый вопрос отображается в UserControl. Каждый вопрос содержит ListView ответов. Каждый ответ имеет логическое свойство, которое указывает, что был выбран ответ, который привязывается к RadioButton внутри DataTemplate.
Мой урезанная XAML следующим образом
<ListView ItemsSource="{Binding AnswerList}" >
<ListView.View>
<GridView>
<!-- Other columns here -->
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<RadioButton IsChecked="{Binding Path=AnswerChecked}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
Я не думаю, что у меня есть какой-либо другой вариант, но использовать ListView, так как мне нужно, чтобы иметь возможность включить другие столбцы и на, а также как необходимость отображать два или более ответов.
Есть ли способ сообщить мне, что она является частью UserControl, а не DataTemplate для целей ее GroupName?
Я рассмотрел назначение GUID каждому UserControl и привязку GroupName RadioButtons к строке GUID, но это кажется чрезмерным и неуклюжим.
Edit: Для визуального сравнения, UI потоков о как это, мои заметки в скобках:
(StackPanel вопросов, связанных с коллекцией вопросов)
- Вопрос управления (Содержит ListView связан с коллекцией ответов «|» ограничивает столбцы)
- [] | Ответ 1 (Объект непроверенного ответа с текстом «Ответ 1»)
- [] | Ответ 2
- [*] | Ответ 3 (Checked ответа Объекта с текстом "Ответом 3")
- Кто был шестнадцатым президентом
- [] | Karl Marx
- [*] | Abraham Lincoln
- [] | Ричард Никсон
- Каков вес одного моля водорода
- [] | 10g
- [] | ,1g
- [] | 1g
«Я рассматривал назначение GUID для каждого UserControl и привязку GroupName RadioButtons к строке GUID, но это кажется чрезмерным и неуклюжим». - И это не сработало. Я закончил тем же вопросом, что и раньше. Каждый RadioButton рассматривался как независимый от других. –
Похоже, я лаяю неправильное дерево с этим. Радио кнопки (по крайней мере в 4.5) будут автоматически сгруппированы по их контейнеру. –