【发布时间】:2016-12-28 13:06:49
【问题描述】:
我有以下页面设置,包含一个包含两列的网格视图:图像和标题。并非所有行都有图像,我正在尝试将图像设为行宽的一半。因此,对于没有可用图像的行,文本应填满整行,而带有图像的行将在其上显示图像 行的一半,其余行的标题。
我已使用 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>
【问题讨论】: