我有以下页面设置,其中包含具有两列的网格视图:图像和标题。并不是所有的行都有图像,我试图将图像放在行宽的一半。因此,对于没有图像可用的行,文本应填充整行,而具有图像的行可在行的一半处显示图像 ,该行的其余部分为标题。UWP GridView在更改大小时调整一列的大小
我已经使用MathConverter将imageWidth调整为行的实际宽度的一半,但在调整大小时(在桌面上调整主窗口大小时,在更改设备方向时在电话/平板电脑上)图像大小未更新。
<Page.Resources>
<local:MathConverter x:Key="MathConverter"/>
<ItemsPanelTemplate x:Key="Compact">
<ItemsStackPanel/>
</ItemsPanelTemplate>
<DataTemplate x:Key="LargeWidthDataTemplate">
<Border BorderThickness="0,0,0,1" HorizontalAlignment="Stretch">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Source="{Binding ImageURL}" MaxWidth="{Binding ActualWidth, ElementName=gridView, Converter={StaticResource MathConverter}}" Margin="4"/>
<TextBlock Grid.Column="1" Text="{Binding Title}"
Loaded="TextBlock_Loaded" HorizontalAlignment="Stretch" TextAlignment="Left" TextWrapping="WrapWholeWords"/>
</Grid>
</Border>
</DataTemplate>
</Page.Resources>
<Grid>
<GridView x:Name="gridView" Grid.Row="2" SizeChanged="gridView_SizeChanged"
ItemsPanel="{StaticResource Compact}" ItemTemplate="{StaticResource LargeWidthDataTemplate}">
<GridView.ItemContainerStyle>
<Style TargetType="GridViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
</GridView.ItemContainerStyle>
</GridView>
</Grid>