DataTemplate 中的两组单选按钮?

Two groups for Radio Button in a DataTemplate?

你好,我有以下问题:我有一个 DataTemplateRadioButton,我希望每个 RadioButton 在功能上都属于这两个组。这可能吗?

所以我希望我只能单击一行中的一个按钮和一列中的一个按钮。

目前我可以在一列中点击一个按钮两次,但我可以点击一行中的每个按钮。

我在 Google 上找不到任何有用的信息。 有人有想法吗?

                   <GridViewColumn Width="80">
                    <GridViewColumn.Header>
                        <GridViewColumnHeader>Hauptfoto</GridViewColumnHeader>
                    </GridViewColumn.Header>
                    <GridViewColumn.CellTemplate >
                        <DataTemplate>
                            <RadioButton Foreground="DarkBlue" GroupName="HauptfotoRB" x:Name="HauptfotoRB" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="25,0,0,0" Checked="HauptfotoRB_Checked"></RadioButton>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
                <GridViewColumn Width="80">
                    <GridViewColumn.Header>
                        <GridViewColumnHeader>Oben__1</GridViewColumnHeader>
                    </GridViewColumn.Header>
                    <GridViewColumn.CellTemplate >
                        <DataTemplate>
                            <RadioButton Foreground="DarkBlue" GroupName="ObenRB" x:Name="ObenRB" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="25,0,0,0" Checked="ObenRB_Checked" ></RadioButton>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
                <GridViewColumn Width="80">
                    <GridViewColumn.Header>
                        <GridViewColumnHeader>Innen__2</GridViewColumnHeader>
                    </GridViewColumn.Header>
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <RadioButton Foreground="DarkBlue" GroupName="InnenRB"  x:Name="InnenRB"  VerticalAlignment="Center" HorizontalAlignment="Center" Margin="25,0,0,0" Checked="InnenRB_Checked" ></RadioButton>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>

对于 DataGrid 你可以,例如使用第二个不可见的 RadioButton 进行列同步,使用 AlternationIndex 作为行同步的行索引(如果你的行数据有一个 ID,当然可以用它代替 AlternationIndex用于行同步)并将它们相互绑定:

<DataGrid ItemsSource="{Binding YourCollection}" AutoGenerateColumns="False" AlternationCount="2147483647">
    <DataGrid.Columns>
        <DataGridTemplateColumn>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <StackPanel>
                        <RadioButton GroupName="col1" IsChecked="{Binding IsChecked, ElementName=b}" Visibility="Collapsed"/>
                        <RadioButton Name="b" 
                                        Content="SomeContent" 
                                        GroupName="{Binding AlternationIndex, RelativeSource={RelativeSource AncestorType=DataGridRow}}"/>
                    </StackPanel>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTemplateColumn>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <StackPanel>
                        <RadioButton GroupName="col2" IsChecked="{Binding IsChecked, ElementName=b}" Visibility="Collapsed"/>
                        <RadioButton Name="b" 
                                        Content="SomeContent" 
                                        GroupName="{Binding AlternationIndex, RelativeSource={RelativeSource AncestorType=DataGridRow}}"/>
                    </StackPanel>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTemplateColumn>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <StackPanel>
                        <RadioButton GroupName="col3" IsChecked="{Binding IsChecked, ElementName=b}" Visibility="Collapsed"/>
                        <RadioButton Name="b" 
                                        Content="SomeContent" 
                                        GroupName="{Binding AlternationIndex, RelativeSource={RelativeSource AncestorType=DataGridRow}}"/>
                    </StackPanel>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>