堆栈面板折叠时从网格中删除 space
Removing space from grid when stackpanel is collapsed
我有一个应用程序,可以在网格中显示堆栈面板行。用户可以将堆栈面板的行隐藏到 "clean up" 网格,并且只有 view/edit 他们想要的东西,这个想法是折叠分隔符之间的堆栈面板和关闭之间的 space。
当我将stackpanel设置为Visibility.Collapsed时,stackpanel消失了,但它们占用的space仍然存在。
如何消除差距? (我添加了 updatelayout,但这似乎没有做任何事情)
之前的样子:Before
之后的样子:After
我的XAML:
<ScrollViewer Name="scroll" PanningMode="Both" Grid.Column="0" Grid.Row="1">
<ScrollViewer.Resources>
<sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">50</sys:Double>
<sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarButtonHeightKey}">50</sys:Double>
</ScrollViewer.Resources>
<Grid x:Name="RecipeEditorCtrl" VerticalAlignment="Top">
</Grid>
</ScrollViewer>
我的 C#:
...
int rowIndex = Grid.GetRow(CNtmp);
rowIndex++;
tmpCN = (CollectionNode)RecipeEditorCtrl.Children[rowIndex];
while (tmpCN.dataType.Text != "SEPERATOR")
{
tmpCN.Visibility = Visibility.Collapsed;
rowIndex++;
tmpCN = (CollectionNode)RecipeEditorCtrl.Children[rowIndex];
}
RecipeEditorCtrl.UpdateLayout();
}
你可以使用 RowsDefinitions
并使每个 RowDefinition
Height
属性 到 Auto
然后将你的 StackPanel
添加到这些行
我有一个应用程序,可以在网格中显示堆栈面板行。用户可以将堆栈面板的行隐藏到 "clean up" 网格,并且只有 view/edit 他们想要的东西,这个想法是折叠分隔符之间的堆栈面板和关闭之间的 space。
当我将stackpanel设置为Visibility.Collapsed时,stackpanel消失了,但它们占用的space仍然存在。
如何消除差距? (我添加了 updatelayout,但这似乎没有做任何事情)
之前的样子:Before
之后的样子:After
我的XAML:
<ScrollViewer Name="scroll" PanningMode="Both" Grid.Column="0" Grid.Row="1">
<ScrollViewer.Resources>
<sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">50</sys:Double>
<sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarButtonHeightKey}">50</sys:Double>
</ScrollViewer.Resources>
<Grid x:Name="RecipeEditorCtrl" VerticalAlignment="Top">
</Grid>
</ScrollViewer>
我的 C#:
...
int rowIndex = Grid.GetRow(CNtmp);
rowIndex++;
tmpCN = (CollectionNode)RecipeEditorCtrl.Children[rowIndex];
while (tmpCN.dataType.Text != "SEPERATOR")
{
tmpCN.Visibility = Visibility.Collapsed;
rowIndex++;
tmpCN = (CollectionNode)RecipeEditorCtrl.Children[rowIndex];
}
RecipeEditorCtrl.UpdateLayout();
}
你可以使用 RowsDefinitions
并使每个 RowDefinition
Height
属性 到 Auto
然后将你的 StackPanel
添加到这些行