Установите изображение на максимальную высоту сетки

В моем XAML у меня есть список. Шаблон элемента списка содержит сетку. Эта сетка имеет 4 столбца и 2 строки. Вот так:
шаблон элемента xaml

Я хочу, чтобы левый столбец был заполнен изображением и цветной полосой под изображением. Моя основная проблема заключается в том, что изображение в большинстве случаев определяет высоту элемента. В то время как максимальная высота изображения должна определяться остальной частью элемента. Итак, минимум 100 (сетка MinHeight="125" - Height="25" прямоугольника). Или больше, если текст делает элемент больше. Но текст должен определять высоту элемента. Не изображение.

Мой текущий xaml выглядит следующим образом:

<Grid MinHeight="125">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="auto" />
        <ColumnDefinition Width="2*" />
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="48" />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="auto" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Grid Grid.Row="0" Grid.RowSpan="2" Grid.Column="0" Width="100">
        <Grid.RowDefinitions>
            <RowDefinition Height="auto" />
            <RowDefinition Height="25" />
        </Grid.RowDefinitions>
        <Image Grid.Row="0" Source="{Binding Path=BitmapImage}" Stretch="UniformToFill" />
        <Rectangle Grid.Row="1">
            <Rectangle.Fill>
                <SolidColorBrush Color="{Binding Path=Color}" />
            </Rectangle.Fill>
        </Rectangle>
    </Grid>
    <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Path=Name}" FontWeight="ExtraBold" TextWrapping="Wrap" FontSize="16" />
    <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Path=Description}" TextWrapping="Wrap" FontSize="20" />
    <TextBlock Grid.Row="0" Grid.RowSpan="2" Grid.Column="2" Text="{Binding Path=Type}" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="Wrap" FontSize="20" Margin="5" />
    <TextBlock Grid.Row="0" Grid.Column="3" Text="{Binding Path=Distance, Converter={StaticResource DistanceConverter}}" FontSize="16" />
    <Image Grid.Column="3" Grid.RowSpan="2" Source="/Images/appbar.next.rest.png" Stretch="Fill" Width="24" Height="24" />
</Grid>

person SynerCoder    schedule 13.11.2012    source источник
comment
Почему -1 на мой вопрос? Любые комментарии? Осмелюсь прокомментировать! Я дважды смею вас!   -  person SynerCoder    schedule 13.11.2012


Ответы (1)


http://darutk-oboegaki.blogspot.com/2011/07/binding-actualheight-and-actualwidth.html содержит информацию о том, как это сделать, учитывая тот факт, что в Silverlight ActualHeight обычно дает значение 0.

Оттуда, если вам нужно вычесть 25 пикселей, вы можете:

  • Напишите преобразователь (объект, реализующий System.Windows.UI.Xaml.Data.IValueConverter)
  • Добавьте экземпляр конвертера в Ресурсы страницы/окна.
  • Добавьте Converter={StaticResource MyConverter}, ConverterParameter=25 к своей привязке.

Надеюсь, это поможет :)

person Fabian Tamp    schedule 13.11.2012
comment
Какая сетка? Сетка, в которой находится изображение? или в сетке все, включая imageGrid? - person SynerCoder; 13.11.2012
comment
Сетка, в которой находится изображение. - person Fabian Tamp; 13.11.2012
comment
Ну, это отстой, это дает мне 0 как фактическую высоту - person SynerCoder; 13.11.2012
comment
Привязка к ActualHeight в Silverlight (и, следовательно, в Windows Phone) — известная проблема: -acutalwidth-is-0" rel="nofollow noreferrer">connect.microsoft.com/VisualStudio/feedback/details/522231/ - person SynerCoder; 13.11.2012
comment
Эта ссылка, которую вы разместили ... у них есть обходной путь, взгляните на вкладку «обходной путь». Подробности на http://darutk-oboegaki.blogspot.com/2011/07/binding-actualheight-and-actualwidth.html. Я редактирую свой ответ, чтобы включить это соответствующим образом. - person Fabian Tamp; 14.11.2012