首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将ListViewItem的高度从ListView绑定到dataTemplate

将ListViewItem的高度从ListView绑定到dataTemplate
EN

Stack Overflow用户
提问于 2014-09-09 05:26:56
回答 2查看 1.3K关注 0票数 1

我的Windows应用程序中有一个,它通过dataTemplateSelector选择一个模板。在“纽约时报”( the ItemTemplate of ListView )中,我看到了一幅图像。我不想修复图像的高度和宽度,我想让它根据可用的空间来调整自己。这样就可以在大屏幕上显示更大的图像。

以下是我的ListView XAML:

代码语言:javascript
复制
  <ListView Name="MyListView"  ItemTemplateSelector="{StaticResource MyTemplateConverter}"
                              Height="{Binding ActualHeight, ElementName=scroll, Converter={StaticResource BottomMarginConverter}}" Width="{Binding ActualWidth, Converter={StaticResource GVWIdthConverter}, ElementName=scroll}"
                              Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Tapped="MyGridView_Tapped">
                        <ListView.ItemsPanel>
                            <ItemsPanelTemplate>
                                <VirtualizingStackPanel Orientation="Horizontal" VerticalAlignment="Stretch" />
                            </ItemsPanelTemplate>
                        </ListView.ItemsPanel>
                        <ListView.ItemContainerStyle>
                            <Style TargetType="ListViewItem">
                                <Setter Property="VerticalContentAlignment" Value="Stretch" />
                                <Setter Property="Margin" Value="0,5,0,5" />
                                <Setter Property="Background" Value="LightCyan" />
                                <Setter Property="BorderBrush" Value="Black" />
                                <Setter Property="BorderThickness" Value="3" />
                            </Style>
                        </ListView.ItemContainerStyle>
                    </ListView>

我已经将VerticalContentAlignment设置为拉伸,这将我的ListViewItem扩展到ListView大小,但问题是当项目中的图像更大时,ListViewItem的大小会比ListView大。我还尝试在上述代码中设置ListViewItem的高度,方法是添加

代码语言:javascript
复制
<Setter Property="Height" Value="{Binding ActualHeight, ElementName=MyGridView}" />

下面是我的ItemTemplate的代码,它是通过ItemTemplateSelector选择的,

代码语言:javascript
复制
<DataTemplate x:Key="PhotoTemplate">
        <Grid x:Name="PhotoTemplateGrid" Width="400" Margin="2"  Background="LightPink" >

            <Grid.RowDefinitions>
                <RowDefinition Height="90"/>
                <RowDefinition Height="*"/>
                <RowDefinition Height="50"/>

            </Grid.RowDefinitions>

            <Grid  Grid.Row="0" Margin="5" HorizontalAlignment="Stretch"  >
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="90" />
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>

                    <Image Grid.Column="0" Source="{Binding from.photoUrl}" Height="70" HorizontalAlignment="Center"  VerticalAlignment="Center"  Width="70" />

                    <StackPanel Orientation="Vertical" Margin="10,10,0,0"  Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Top">
                        <TextBlock Grid.Column="1" Text="{Binding from.Name}" Style="{StaticResource SubHeaderText}"  VerticalAlignment="Top"  
                            IsHitTestVisible="false" TextWrapping="NoWrap" Foreground="{StaticResource StalkerBlueThemeBrush}" />
                        <TextBlock Text="{Binding created_Time, Converter={StaticResource TextDateConverter}}" Margin="0,0,0,0" Style="{StaticResource BaselineTextStyle}"  VerticalAlignment="Top"  
                            IsHitTestVisible="false" TextWrapping="NoWrap"  FontSize="12" />
                    </StackPanel>

                </Grid>

            <Grid Grid.Row="1" >
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="*"   />
                </Grid.RowDefinitions>

                <TextBlock Grid.Row="0" Margin="5,0,5,0" TextAlignment="Center" MaxHeight="40" HorizontalAlignment="Stretch" Text="{Binding message}"  Style="{StaticResource BaselineTextStyle}"
                        TextTrimming="WordEllipsis" IsHitTestVisible="false" TextWrapping="Wrap" VerticalAlignment="Center"  />

                <TextBlock Grid.Row="1" MaxHeight="20" Margin="5,0,5,0" TextAlignment="Center" Text="{Binding description}" Style="{StaticResource BaselineTextStyle}"
                    TextTrimming="WordEllipsis" IsHitTestVisible="false" TextWrapping="Wrap" VerticalAlignment="Center" HorizontalAlignment="Stretch"   />

                <Image Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Center" Stretch="Uniform" Source="{Binding picture}" Margin="2"     />

            </Grid>

            <Grid Grid.Row="2" Background="LightGray" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
                    <Grid.RowDefinitions>
                        <RowDefinition Height="15" />
                        <RowDefinition Height="*"/>
                    </Grid.RowDefinitions>
                    <Grid Grid.Row="0" Height="Auto" Background="White" >
                        <Polygon Points="15,0 0,15 30,15" Stroke="LightGray" Fill="LightGray" Margin="20,0,0,0" />
                    </Grid>
                    <Grid Grid.Row="1" HorizontalAlignment="Stretch">

                        <TextBlock HorizontalAlignment="Left" VerticalAlignment="Center" Margin="5,0,0,0" Text="View all comments" Style="{StaticResource BaselineTextStyle}" Foreground="{StaticResource BlueThemeBrush}" />

                        <StackPanel  Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,0,5,0">

                            <Image Height="15" VerticalAlignment="Center" HorizontalAlignment="Stretch" Margin="0,0,0,0"  Width="25" Source="ms-appx:///Assets/CtBlueSmall.png" />
                            <TextBlock  HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,0,0" TextWrapping="NoWrap" TextTrimming="WordEllipsis" Text="{Binding CtCount}" Foreground="White"   />
                            <Image  Height="15" VerticalAlignment="Center" HorizontalAlignment="Stretch" Margin="0,0,0,0" Width="25" Source="ms-appx:///Assets/LeBlueSmall.png" />
                            <TextBlock  HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,0,0" TextWrapping="NoWrap" TextTrimming="WordEllipsis" Text="{Binding LeCount}" Foreground="White"   />

                        </StackPanel>
                    </Grid>
                </Grid>
        </Grid>
    </DataTemplate>

第1行<Grid Grid.Row="1" >的网格包含的图像使得高度比ListView更大。我想让这个Grid扩展到它的父级的大小。但不像它的父母那么大。换句话说,我只是想把它的高度绑定到它的父级。请帮帮我,我被困在这里了。

EN

回答 2

Stack Overflow用户

发布于 2014-09-09 07:34:43

您是否尝试将应用于该图像的行定义更改为“自动”?<Grid Grid.Row="1"> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions>

票数 0
EN

Stack Overflow用户

发布于 2014-10-24 11:08:17

通过将Height of Grid in DataTemplate绑定到ActualHeight of ListView,我在自己的项目中成功地解决了这一问题。如果绑定是以ListView.ItemContainerStyle样式作为setter,则我似乎不起作用。

代码语言:javascript
复制
<DataTemplate>
    <Grid Height="{Binding ActualHeight, ElementName=MyListView}">
        ...
    </Grid>
</DataTemplate>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25737212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档