Как взять всю ширину экрана при привязке динамических значений в 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>