在 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
作为 Grid
的 ItemsPanel
,让您的单选按钮占据应用的整个宽度 window.
尽管 UWP 中不存在 UniformGrid
。但是我们可以自己实现,也可以像WinRTXamlToolkit中那样使用第三方UniformGrid
。
以WinRTXamlToolkit为例,我们可以使用
<toolkit:UniformGrid Rows="1" />
而不是
<VariableSizedWrapGrid Orientation="Horizontal" />
这里toolkit
是WinRTXamlToolkit.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>
我尝试在通用 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
作为 Grid
的 ItemsPanel
,让您的单选按钮占据应用的整个宽度 window.
尽管 UWP 中不存在 UniformGrid
。但是我们可以自己实现,也可以像WinRTXamlToolkit中那样使用第三方UniformGrid
。
以WinRTXamlToolkit为例,我们可以使用
<toolkit:UniformGrid Rows="1" />
而不是
<VariableSizedWrapGrid Orientation="Horizontal" />
这里toolkit
是WinRTXamlToolkit.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>