Две группы для переключателя в DataTemplate? - PullRequest
1 голос
/ 24 марта 2020

Здравствуйте, у меня есть следующая проблема: у меня есть DataTemplate с RadioButton s, и я хочу, чтобы каждый 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>

1 Ответ

0 голосов
/ 24 марта 2020

Для DataGrid вы можете, например, использовать вторую невидимую RadioButton для синхронизации столбцов и AlternationIndex в качестве индекса строки для синхронизации строки (если у вас есть идентификатор по данным строки, то, конечно, его можно использовать вместо 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>
...