添加内容时C#WPF网格调整大小

时间:2014-12-16 03:33:44

标签: c# wpf

我在滚动查看器中有一个网格,我想在添加内容时重新调整大小。目前,如果我在视图之外添加一个按钮,它不会调整大小。这很奇怪......但不是我的主要关注点。我主要担心的是,如果我在程序上将元素添加到网格中,它会调整大小。如果没有,那么我应该使用什么来调整大小。

这是当前的想法

<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>

2 个答案:

答案 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>

HeightWidth属性设置为Auto。这意味着他们会根据内容的大小重新调整自己。例如,在上面的示例中,按钮的高度和宽度都设置为100.这意味着行和列将保持这些值。