【问题标题】:Align A Grid Alongside The Content Of A Scroll Viewer Rather Than The Entire Scroll Viewer Including Scroll Bar?将网格与滚动查看器的内容对齐,而不是与包括滚动条的整个滚动查看器对齐?
【发布时间】:2011-11-22 22:47:08
【问题描述】:

我在 XAML 中有以下场景:

<Grid Grid.IsSharedSizeScope="True">
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <Grid x:Name="gridLabels" Grid.Column="0">
        <Grid.RowDefinitions>
            <Row SharedSizeGroup="FirstRow" MinHeight=24/>
            <Row SharedSizeGroup="SecondRow" MinHeight=24/>
            <Row SharedSizeGroup="ThirdRow" MinHeight24/>
        </Grid.RowDefinitions>
        <TextBlock Grid.Row="0">Top Item:</TextBlock>
        <TextBlock Grid.Row="1">Middle Item:</TextBlock>
        <TextBlock Grid.Row="2">Bottom Item:</TextBlock>
    </Grid>
    <ScrollViewer x:Name="scrVwItems" Grid.Column="1" VerticalScrollBarVisibility="Disabled"
            HorizontalScrollBarVisibility="Visible" >
        <ItemsControl ItemSource="{Binding Bondage}">
            <!--etc-->
        </ItemsControl>
    </ScrollViewer>
</Grid>

在 ItemsControl 中,DataTemplated 项目有自己的网格并设置了 SharedSizeGroup,以便 TextBlocks 等与最左侧的 TextBlock 标签对齐。

我遇到的问题是,在填充 ItemsControl 之前,SharedSizeGroups 不会对齐,并且“底部项目:”文本与 ScrollViewer 的水平滚动条处于同一水平。

有没有一种简单的方法可以将“gridLabels”网格与 ScrollViewer 的内容区域而不是整个 ScrollViewer 本身对齐?

【问题讨论】:

    标签: wpf layout


    【解决方案1】:

    排序后,只需给 ItemsControl(这是 ScrollViewer 的内容)一个名称,并使用 ElementName 绑定到“gridLabels”.Height 中的 ActualHeight。还将 MinHeight 应用于 ItemsControl。

    <Grid Grid.IsSharedSizeScope="True">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Grid x:Name="gridLabels" Grid.Column="0" 
            Height={Binding ElementName=myItemsControl, Path=ActualHeight}">
            <Grid.RowDefinitions>
                 <Row SharedSizeGroup="FirstRow" MinHeight=24/>
                 <Row SharedSizeGroup="SecondRow" MinHeight=24/>
                 <Row SharedSizeGroup="ThirdRow" MinHeight24/>
            </Grid.RowDefinitions>
            <TextBlock Grid.Row="0">Top Item:</TextBlock>
            <TextBlock Grid.Row="1">Middle Item:</TextBlock>
            <TextBlock Grid.Row="2">Bottom Item:</TextBlock>
        </Grid>
        <ScrollViewer x:Name="scrVwItems" Grid.Column="1" VerticalScrollBarVisibility="Disabled"
            HorizontalScrollBarVisibility="Visible" >
            <ItemsControl ItemSource="{Binding Bondage}" x:Name="myItemsControl" MinHeight="150">
                 <!--etc-->
            </ItemsControl>
        </ScrollViewer>
    </Grid>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多