添加内容时调整 C# WPF 网格大小
本文关键字:WPF 网格 调整 添加 | 更新日期: 2023-09-27 18:34:16
我在滚动查看器中有一个网格,我想在添加内容时重新调整大小。目前,如果我在视图中添加一个按钮,它不会调整大小。这很奇怪...但不是我的主要关注点。我主要关心的是,如果我以编程方式将元素添加到网格中,它会调整大小。如果不是,那么我应该使用什么来调整它的大小。
这是当前的想法
<DockPanel HorizontalAlignment="Left" Height="266" LastChildFill="False" VerticalAlignment="Top" Width="434">
<Menu Height="20" VerticalAlignment="Top" DockPanel.Dock="Top">
<MenuItem Header="MenuItem">
<MenuItem Header="MenuItem" HorizontalAlignment="Left" Width="145"/>
</MenuItem>
</Menu>
<ScrollViewer DockPanel.Dock="Bottom" Height="246" RenderTransformOrigin="0.5,0.5">
<Grid Height="173" Width="100"/>
</ScrollViewer>
</DockPanel>
您尝试使用网格的方式不是它的工作方式。要使其正常工作,您必须至少定义行或列。然后,可以将控件放置在特定的行和列中。看起来在您的情况下,您只需要一行和一列。它在行/列定义中定义大小以及是否应调整大小。
<ScrollViewer DockPanel.Dock="Bottom" Height="246" RenderTransformOrigin="0.5,0.5">
<Grid>
<!--Define rows and columns-->
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<!--Place a control in the grid-->
<Button Grid.Row="0" Grid.Column="0" Width="100" Height="100"/>
</Grid>
</ScrollViewer>
"Height
"和"Width
"属性设置为 Auto
。这意味着他们将根据内容的大小重新调整自己。例如,在上面的示例中,按钮的高度和宽度都设置为 100。这意味着行和列将保持这些值。
嗨,
尝试从 DockPanel 中删除 Width="434",并从您的控件中删除其他宽度 Width="100",如果宽度是固定的,则无法调整大小,您应该删除 width 属性,我希望有效
编辑:您可以使用StackPanel enstead Grid,您的问题是当您添加某些元素时,它会添加另一个元素的顶部。XAML 代码:
<DockPanel HorizontalAlignment="Left" VerticalAlignment="Top" >
<Menu Height="20" VerticalAlignment="Top" DockPanel.Dock="Top">
<MenuItem Header="MenuItem">
<MenuItem Header="MenuItem" HorizontalAlignment="Left" Width="145"/>
</MenuItem>
</Menu>
<ScrollViewer DockPanel.Dock="Bottom" >
<StackPanel Name="uiStack" Orientation="Vertical">
</StackPanel>
</ScrollViewer>
<Button Content="Click me" Click="Button_Click"></Button>
</DockPanel>
代码背后:
private void Button_Click(object sender, RoutedEventArgs e)
{
uiStack.Children.Add(new Button() { Content = "Button1" });
uiStack.Children.Add(new TextBlock() { Text = "Button1" });
}