C#添加内容时调整WPF网格大小
我在scrollviewer中有一个网格,我想在添加内容时重新调整其大小。当前,如果我在视图外添加按钮,它不会调整大小。这很奇怪。。。但这不是我最关心的。我主要关心的是,如果我在网格程序中添加元素,它是否会调整大小。如果没有,那么我应该用什么来调整它的大小 这是目前的想法C#添加内容时调整WPF网格大小,c#,wpf,C#,Wpf,我在scrollviewer中有一个网格,我想在添加内容时重新调整其大小。当前,如果我在视图外添加按钮,它不会调整大小。这很奇怪。。。但这不是我最关心的。我主要关心的是,如果我在网格程序中添加元素,它是否会调整大小。如果没有,那么我应该用什么来调整它的大小 这是目前的想法 <DockPanel HorizontalAlignment="Left" Height="266" LastChildFill="False" VerticalAlignment="Top" Width="434"&g
<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>
嗨,请尝试从DockPanel中删除Width=“434”,并从control 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>
您尝试使用网格的方式与它的工作方式不同。要使其工作,您必须至少定义行或列。然后可以将控件放置在特定的行和列中。在您的例子中,似乎只需要一行和一列。 在行/列定义中定义大小以及是否应调整大小
<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。这意味着行和列将保持这些值。出于所有意图和目的,我尝试使用一个可变的垂直轴(因此高度)。也是的,我试着把所有东西都设置成自动。如果我手动添加网格,我无法将其调整为内容大小,因此我假设它在编程上是相同的
<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>