WPF -展开时RowHeaderTemplate在控件顶部对齐

v1l68za4  于 2023-04-07  发布在  其他
关注(0)|答案(2)|浏览(142)

我想将RowHeaderTemplate中的控件对齐到顶部。
这是控件现在的外观:

这是我的模板:

<DataGrid.RowHeaderTemplate>
    <DataTemplate>
        <StackPanel Background="Green">
            <Expander Background="Yellow" VerticalAlignment="Top" >

            </Expander>
        </StackPanel>
    </DataTemplate>
</DataGrid.RowHeaderTemplate>

正如你所看到的,有绿色backgroundStackPanel没有覆盖“整个”模板框,所以我不能将Expander垂直对齐到顶部。
你能给我提个建议吗?我怎样才能解决这个小问题?

ddrv8njm

ddrv8njm1#

我用代码隐藏解决了这个问题。我的Expanded方法现在看起来像这样:

for (var vis = sender as Visual; vis != null; vis = VisualTreeHelper.GetParent(vis) as Visual)
            {
                if (vis is DataGridRow)
                {
                    var row = (DataGridRow)vis;
                    row.DetailsVisibility = row.DetailsVisibility == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible;
                    row.UpdateLayout();
                    var height = row.RenderSize.Height; 
                    var exp = sender as Expander;
                    ((StackPanel)VisualTreeHelper.GetParent(exp)).Height = height;
                    break;
                }
            }

在折叠时,我将StackPanelheight设置为30(因为这是我的默认高度)。

sg24os4d

sg24os4d2#

标签:How to Center Align row numbers in Datagrid row header in WPF
这对我很有效:

<DataGrid.RowHeaderStyle>
    <Style TargetType="DataGridRowHeader" BasedOn="{StaticResource {x:Type DataGridRowHeader}}">
        <Setter Property="VerticalAlignment" Value="Top"/>
    </Style>
</DataGrid.RowHeaderStyle>

相关问题