0

我尝试在通用 Windows 应用程序中动态填充单选按钮。我已经为不同的屏幕写过VisualState。现在我尝试填充单选按钮,它们必须占据窗口的整个宽度。我能够为每个 VisualState 设置固定宽度,但我认为这可能不是一个好的做法并且难以进一步处理。 在大标签单选按钮中填充如下

 <GridView Grid.Row="1" Height="auto" Width="auto" HorizontalAlignment="Stretch" ItemsSource="{Binding DamageLocationList}">
                            <GridView.ItemsPanel>
                                <ItemsPanelTemplate>
                                    <VariableSizedWrapGrid Orientation="Horizontal" />
                                </ItemsPanelTemplate>
                            </GridView.ItemsPanel>
                            <GridView.ItemTemplate>
                                <DataTemplate x:DataType="model:DamageLocations">
                                <Grid>
                                     <RadioButton Style="{StaticResource ButtonRadioButtonStyle}"  HorizontalContentAlignment="Center" HorizontalAlignment="Stretch" IsChecked="{Binding IsChecked, UpdateSourceTrigger=PropertyChanged}"  Content="{Binding DamageLocation}"   Margin="0" Click="RadioButton_Checked"  />
                                </Grid>
                                </DataTemplate>
                            </GridView.ItemTemplate>
                        </GridView>
4

1 回答 1

1

正如@Ashok Rathod 所说,您可以尝试使用UniformGridas ItemsPanelof yourGrid来使单选按钮占据应用程序窗口的整个宽度。

虽然UniformGrid在 UWP 中不存在。但是我们可以自己实现它,也可以使用第三方UniformGrid,如WinRTXamlToolkit中的。

以 WinRTXamlToolkit 为例,我们可以使用

<toolkit:UniformGrid Rows="1" />

代替

<VariableSizedWrapGrid Orientation="Horizontal" />

toolkit是 的命名空间WinRTXamlToolkit.Controls

xmlns:toolkit="using:WinRTXamlToolkit.Controls"                             

由于我没有设置Columns属性,它将是默认值,即0. Columns 属性的值为零 (0) 指定列计数是根据行数和 Grid 中可见子元素的数量计算的。由于我设置Rows1,所有项目将被放置在一行中并具有相同的宽度。

在此之后,您可能还需要设置ItemContainerStyle使单选按钮拉伸如下:

<GridView.ItemContainerStyle>
    <Style TargetType="GridViewItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    </Style>
</GridView.ItemContainerStyle>
于 2016-04-05T12:14:17.070 回答