Как настроить автоматическую усадку столбца в сетке, если есть свободное место?

#silverlight #xaml #layout #windows-phone-7.1

#silverlight #xaml #макет #windows-phone-7.1

Вопрос:

В моем приложении Windows Phone 7.5 у меня есть следующий список. В основном ItemTemplate для listbox содержит изображение, некоторый текст, затем изображение.

Если я установлю для свойства видимости на одном или обоих изображениях значение «Свернутый», я бы хотел, чтобы текстовый столбец расширялся до максимального размера (а не переносил текст), например, занимал место, которое ранее занимали изображения. И наоборот, когда я устанавливаю видимость изображений обратно на видимую, я бы хотел, чтобы изображения отображались, а текст сжимался.

Как я могу сделать что-то подобное в 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 и 2 на Auto и присвоения им максимальной ширины 58?