DataTemplate 中的两组单选按钮?
Two groups for Radio Button in a DataTemplate?
你好,我有以下问题:我有一个 DataTemplate
和 RadioButton
,我希望每个 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>
你好,我有以下问题:我有一个 DataTemplate
和 RadioButton
,我希望每个 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>