我想将
RowHeaderTemplate
中的控件对齐到顶部。
控件现在是这样的:
这是我的模板:
<DataGrid.RowHeaderTemplate>
<DataTemplate>
<StackPanel Background="Green">
<Expander Background="Yellow" VerticalAlignment="Top" >
</Expander>
</StackPanel>
</DataTemplate>
</DataGrid.RowHeaderTemplate>
如您所见,带有绿色
StackPanel
的background
没有覆盖“整个”模板框,所以我无法将Expander
垂直对齐到顶部。
你能告诉我如何解决这个小问题吗?
我解决了代码隐藏的问题。我的
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
(因为这是我的默认高度)
看这里: 如何在 WPF 的 Datagrid 行标题中居中对齐行号
这对我有用:
<DataGrid.RowHeaderStyle>
<Style TargetType="DataGridRowHeader" BasedOn="{StaticResource {x:Type DataGridRowHeader}}">
<Setter Property="VerticalAlignment" Value="Top"/>
</Style>
</DataGrid.RowHeaderStyle>