SelectiveScrollingGrid是否只冻结第一列上的列

本文关键字:一列 是否 冻结 SelectiveScrollingGrid | 更新日期: 2023-09-27 18:19:52

我需要在滚动时冻结网格中的右侧列。在其他地方,我使用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是否可以与右侧的冻结列一起使用?如果没有,还有其他解决方案吗?

SelectiveScrollingGrid是否只冻结第一列上的列

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

<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>