【问题标题】:Alignment issues using StackPanel in ListView.ItemsPanel在 ListView.ItemsPanel 中使用 StackPanel 的对齐问题
【发布时间】:2017-03-22 07:04:39
【问题描述】:

我想显示一组横向移动的团队,每个团队中的玩家向下移动。为了实现这一点,我将一个 ListView (lvwTeams) 绑定到一组 Teams。我将 lvwTeams.ItemsPanel 更改为 StackPanel,其方向设置为水平。 ItemTemplate 更改为包含另一个 ListView (lvwPlayers),它绑定到 Team 的 Players 集合。

一切正常,但 ItemTemplate 中定义的控件出现在 StackPanel 的中间。有什么办法可以让 lblTeamName 位于顶部,lvwPlayers 位于其下方,但填充 StackPanel 给出的剩余区域?

这是 XAML:

 <ListView x:Name="lvwTeams" Grid.Row="1" Grid.Column="1" ItemsSource="{Binding Teams}">
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal"></StackPanel>
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>

    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                </Grid.RowDefinitions>
                <Label x:Name="lblTeamName" Grid.Row="0" Content="{Binding Name}"/>
                <ListView x:Name="lvwPlayers" Grid.Row="1" ItemsSource="{Binding Players}" >
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <Label Content="{Binding FullName}"/>
                        </DataTemplate>
                    </ListView.ItemTemplate>

                </ListView>
            </Grid>

        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

【问题讨论】:

    标签: c# wpf xaml listview layout


    【解决方案1】:

    尝试对 ListView 的内容进行拉伸,如下所示:

            <ListView x:Name="lvwTeams" 
                  Grid.Row="1" 
                  Grid.Column="1" 
                  ItemsSource="{Binding Teams}"
                  HorizontalContentAlignment="Stretch" 
                  VerticalContentAlignment="Stretch">
    

    并将* 放在网格的第二行,以拉伸第二个 ListView。

    <ListView.ItemTemplate>
         <DataTemplate>
             <Grid>
               <Grid.RowDefinitions>
                   <RowDefinition Height="Auto"/>
                   <RowDefinition Height="*"/>
               </Grid.RowDefinitions>
    

    【讨论】:

    • @Cleve。很高兴听到它有效。如果没问题,您也可以将其标记为答案。
    • 由于某种原因,我不得不等待 4 分钟才能将其标记为答案,因此延迟了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 2017-12-04
    • 2015-12-08
    相关资源
    最近更新 更多