在 Universal windows 应用程序中绑定动态值时如何获取整个屏幕宽度

How to take whole width of the screen when binding dynamic values in Universal windows Application

我尝试在通用 windows 应用程序中动态填充单选按钮。我已经为不同的人写了 VisualState 屏幕。现在我尝试填充单选按钮,它们必须占据 window 的整个宽度。我可以为每个 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>

正如@Ashok Rathod 所说,您可以尝试使用 UniformGrid 作为 GridItemsPanel,让您的单选按钮占据应用的整个宽度 window.

尽管 UWP 中不存在 UniformGrid。但是我们可以自己实现,也可以像WinRTXamlToolkit中那样使用第三方UniformGrid

以WinRTXamlToolkit为例,我们可以使用

<toolkit:UniformGrid Rows="1" />

而不是

<VariableSizedWrapGrid Orientation="Horizontal" />

这里toolkitWinRTXamlToolkit.Controls的命名空间:

xmlns:toolkit="using:WinRTXamlToolkit.Controls"                             

因为我没有设置Columns 属性,所以会默认为0。列 属性 的零 (0) 值指定列计数是根据行数和网格中可见子元素的数量计算的。由于我将 Rows 设置为 1,因此所有项目将排成一行并且具有相同的宽度。

在此之后,您可能还需要设置 ItemContainerStyle 以使单选按钮像这样伸展:

<GridView.ItemContainerStyle>
    <Style TargetType="GridViewItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    </Style>
</GridView.ItemContainerStyle>