首页 > 解决方案 > 数据模板中单选按钮的两组?

问题描述

您好我有以下问题:我有一个DataTemplatewith RadioButtons 并且我希望每个RadioButton功能都属于两个组。这可能吗?

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

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

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

标签: c#wpfxamldatatemplate

解决方案


例如,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>

推荐阅读