如果有空间,如何将网格中的列设置为自动收缩?

时间:2011-10-20 07:48:11

标签: silverlight xaml layout windows-phone-7.1

我的Windows Phone 7.5应用程序中有以下列表框。基本上,列表框的ItemTemplate包含图像,一些文本,然后是图像。

如果我将一个或两个图像上的Visibility属性设置为Collapsed,我希望文本列扩展到其最大大小(而不是换行文本),例如占用之前由图像占据的空间。相反,当我将图像的Visility设置回Visible时,我希望图像显示和文本收缩。

如何在Xaml中实现类似的功能?

<ListBox x:Name="MainListBox" Margin="0,0,-12,0" ItemsSource="{Binding Items}" >
    <ListBox.Resources>
        <BitmapImage x:Key="ProjectIcon" UriSource="Images/Dark/appbar.delete.rest.png" />
    </ListBox.Resources>

    <ListBox.ItemTemplate>
        <DataTemplate>

            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="58"/>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="58"/>
                </Grid.ColumnDefinitions>

                <Image Grid.Column="0" Source="{StaticResource ProjectIcon}" Visibility="Collapsed" Width="48" Height="48" />
                <StackPanel Grid.Column="1" Margin="0,0,0,17" Width="432" Height="78" Orientation="Vertical">
                    <TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                    <TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
                </StackPanel>
                <Image Grid.Column="2" Source="{StaticResource ProjectIcon}" Visibility="Visible" Width="48" Height="48" />
            </Grid>

        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

1 个答案:

答案 0 :(得分:1)

如何将第0列和第2列的宽度设置为自动,并将它们的MaxWidth设置为58?

相关问题