我在滚动查看器中有一个网格,我想在添加内容时重新调整大小。目前,如果我在视图之外添加一个按钮,它不会调整大小。这很奇怪......但不是我的主要关注点。我主要担心的是,如果我在程序上将元素添加到网格中,它会调整大小。如果没有,那么我应该使用什么来调整大小。
这是当前的想法
<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>
答案 0 :(得分:0)
您好尝试删除Width =&#34; 434&#34;从你的DockPanel和你的其他宽度控制宽度=&#34; 100&#34;,如果宽度是固定的,你不能调整大小你应该删除宽度属性,我希望工作
编辑: 你可以使用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" });
}
答案 1 :(得分:0)
尝试使用网格的方式不是它的工作方式。要使其正常工作,您必须至少定义行或列。然后,您可以将控件放在特定的行和列中。看起来在您的情况下,您只需要单行和列。 它位于行/列定义中,您可以在其中定义大小以及是否应调整大小。
<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.这意味着行和列将保持这些值。