c# - 数据模板中单选按钮的两组?
问题描述
您好我有以下问题:我有一个DataTemplate
with 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>
解决方案
例如,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>
推荐阅读
- java - 单例的这两种实现有什么区别?
- javascript - 如何让 Vuex 与使用数组的复选框配合得很好?
- html - 如何添加边框
- c# - 序列化 JSON 对象时的“/”结果
- javascript - 在 Draft-JS 中,如何将 html iframe 插入到我的 contentState 中?
- docker - Docker 运行卷参数 指定 --help 以获得可用选项和命令的列表
- java - Spring Forms:选择元素:更新“路径”值时,选择软刷新后仍然显示旧值?
- reporting-services - SSRS - 限制用户上传某些文件类型?
- solr - Solr - 当我们同时拥有同一类别的男鞋和女鞋时,仅返回男鞋
- html - 如何更改引导 div 的高度和宽度?