私が持っている質問は、次の答えの拡張です。ラジオボタンのGroupNameのスコープは非常に広く、多くの場合、GroupNameをコンテナによって自動的に割り当てるのが最善であると記載されています。
https://stackoverflow.com/a/6062697/907920
静的なGroupNameを使用すると、すべてのRadioButtonがグループを共有します。(リンクの答えとして示されています。)
ただし、GroupNameを使用しない場合、個々のRadioButtonは、それ自体がグループ内にあるかのように扱われます。GroupNameを自動的に割り当てるために、DataTemplateまたはCellTemplateを「親」として使用していると想定することしかできません。
StackPanelに質問のリストがあります。各質問はUserControlに表示されます。各質問には、回答のListViewが含まれています。各回答には、回答が選択されたことを示すブールプロパティがあり、DataTemplate内のRadioButtonにバインドされます。
私の削除された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>
他の列のオンとオフを切り替えたり、2つ以上の回答を表示したりする必要があるため、ListViewを使用する以外に選択肢はないと思います。
GroupNameの目的でDataTemplateではなくUserControlの一部であることをラジオボタンに伝える方法はありますか?
各UserControlにGUIDを割り当て、RadioButtonsのGroupNameをGUIDの文字列にバインドすることを検討しましたが、それは過度で不器用なようです。
編集:視覚的な参照のために、UIは次のように流れます。括弧内のメモは次のとおりです。
(質問のコレクションにバインドされた質問のStackPanel)
- 質問コントロール(回答のコレクションにバインドされたListViewが含まれています'|'は列を区切ります)
- [] | 回答1(「回答1」というテキストが含まれるチェックされていない回答オブジェクト)
- [] | 回答2
- [*] | 回答3(「回答3」というテキストを含むチェック済み回答オブジェクト)
- 第16代大統領は誰でしたか
- [] | カール・マルクス
- [*] | アブラハムリンカーン
- [] | リチャードニクソン
- 水素1モルの重さは?
- [] | 10g
- [] | .1g
- [] | 1g