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

问题描述 投票:0回答:2

我想将

RowHeaderTemplate
中的控件对齐到顶部。

控件现在是这样的:

这是我的模板:

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

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

如您所见,带有绿色

StackPanel
background
没有覆盖“整个”模板框,所以我无法将
Expander
垂直对齐到顶部。

你能告诉我如何解决这个小问题吗?

c# wpf mvvm datagrid
2个回答
0
投票

我解决了代码隐藏的问题。我的

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

在折叠时我将

StackPanel
height
设置为
30
(因为这是我的默认高度)


0
投票

看这里: 如何在 WPF 的 Datagrid 行标题中居中对齐行号

这对我有用:

<DataGrid.RowHeaderStyle>
    <Style TargetType="DataGridRowHeader" BasedOn="{StaticResource {x:Type DataGridRowHeader}}">
        <Setter Property="VerticalAlignment" Value="Top"/>
    </Style>
</DataGrid.RowHeaderStyle>
© www.soinside.com 2019 - 2024. All rights reserved.