Как взять всю ширину экрана при привязке динамических значений в Universal Windows Application

Я пытаюсь динамически заполнять переключатели в приложении Universal 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>

1 ответ

Решение

Как сказал @Ashok Rathod, вы можете попробовать использовать UniformGrid как ItemsPanel вашей Grid чтобы ваши радио-кнопки занимали всю ширину окна вашего приложения.

Хотя UniformGrid не существует в UWP. Но мы можем реализовать это сами или использовать третье лицо UniformGrid как то, что в WinRTXamlToolkit.

Используя WinRTXamlToolkit, например, мы можем использовать

<toolkit:UniformGrid Rows="1" />

вместо

<VariableSizedWrapGrid Orientation="Horizontal" />

Вот toolkit пространство имен WinRTXamlToolkit.Controls:

xmlns:toolkit="using:WinRTXamlToolkit.Controls"                             

Как я не поставил Columns свойство, это будет значение по умолчанию, которое 0, Нулевое значение (0) для свойства Columns указывает, что количество столбцов вычисляется на основе количества строк и количества видимых дочерних элементов, находящихся в таблице. Так как я установил Rows в 1все элементы будут помещены в один ряд и имеют одинаковую ширину.

После этого вам также может понадобиться установить ItemContainerStyle чтобы радио кнопки растягивались как:

<GridView.ItemContainerStyle>
    <Style TargetType="GridViewItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    </Style>
</GridView.ItemContainerStyle>
Другие вопросы по тегам