SelectiveScrollingGrid 只能冻结第一列吗?

3

我有一个需求,需要在滚动时冻结网格的右侧列。在其他地方,我使用SelectiveScrollingGrid来很好地冻结左侧列,但是当冻结列是右侧列时,它不再起作用。

这里是一些XAML代码:

<!-- Right aligned frozen column results in clipping when scrollbar appears -->
<SelectiveScrollingGrid>
    <SelectiveScrollingGrid.ColumnDefinitions>
      <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>
    </SelectiveScrollingGrid.ColumnDefinitions>

    <DataGridCellsPresenter Grid.Column="0" ItemsPanel="{TemplateBinding ItemsPanel}" />
    <DataGridRowHeader Grid.Column="1" 
         SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical">
</SelectiveScrollingGrid>

当调整包含网格的窗口大小时,上述方法无效(当出现滚动条时,DataGridRowHeader区域会被裁剪)。

然而,下面的XAML可以正常工作:

<!-- Left aligned frozen column works! -->
<SelectiveScrollingGrid>
    <SelectiveScrollingGrid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
      <ColumnDefinition Width="*"/>
    </SelectiveScrollingGrid.ColumnDefinitions>

    <DataGridCellsPresenter Grid.Column="1" ItemsPanel="{TemplateBinding ItemsPanel}" />
    <DataGridRowHeader Grid.Column="0" 
         SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical">
</SelectiveScrollingGrid>

可否在右侧冻结列时使用SelectiveScrollingGrid?如果不行,是否有其他解决方案?


你能解决你的问题吗? - WiiMaxx
1
哦天啊,我不记得了。那是几年前的事了!抱歉! - Dr. Andrew Burnett-Thompson
1个回答

1

您可以冻结任何您喜欢的列,其他列将在冻结列下方滚动/浮动。在下面的代码片段中,第一列中的文本块只允许在垂直方向上滚动(水平滚动对此文本块没有影响)。

<SelectiveScrollingGrid>
                            <SelectiveScrollingGrid.ColumnDefinitions>
                                <ColumnDefinition Width="{Binding ElementName=XX,Path=ActualWidth}" ></ColumnDefinition>
                                <ColumnDefinition Width="{Binding ElementName=LastName,Path=ActualWidth}"></ColumnDefinition>
                                <ColumnDefinition Width="{Binding ElementName=Address,Path=ActualWidth}"></ColumnDefinition>
                            </SelectiveScrollingGrid.ColumnDefinitions>
                            <TextBlock Text="1111111111111" Grid.Column="0" SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical" ></TextBlock>

                            <TextBlock Text="2" Grid.Column="1"></TextBlock>
                            <TextBlock Text="3" Grid.Column="2"></TextBlock>

                        </SelectiveScrollingGrid>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接