2016-04-04 3 views
0

Я пытаюсь динамически переключаться с помощью переключателей в приложении Universal windows. Я уже писал VisualState для разных экранов. Теперь я пытаюсь заполнить радиокнопку, которой они должны занимать всю ширину окна. Я могу установить фиксированную ширину для каждой VisualState. Но я думаю, что это может быть плохой практикой и с ней сложно справиться. In the large tab radio buttons populate like thisКак сделать всю ширину экрана при привязке динамических значений в универсальных окнах. Приложение

<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

вы можете попробовать с UniformGrid раз ?? –

+0

uniformgrid не существует в UWP. Thks – Dino

+0

ОК, спасибо за обмен информацией. –

ответ

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. Значение zero (0) для свойства Columns указывает, что подсчет столбца вычисляется на основе количества строк и количества видимых дочерних элементов, находящихся в Grid. Поскольку я установил Rows в 1, все предметы будут помещены в одну строку и имеют одинаковую ширину.

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

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