Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#添加内容时调整WPF网格大小_C#_Wpf - Fatal编程技术网

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

C#添加内容时调整WPF网格大小,c#,wpf,C#,Wpf,我在scrollviewer中有一个网格,我想在添加内容时重新调整其大小。当前,如果我在视图外添加按钮,它不会调整大小。这很奇怪。。。但这不是我最关心的。我主要关心的是,如果我在网格程序中添加元素,它是否会调整大小。如果没有,那么我应该用什么来调整它的大小 这是目前的想法 <DockPanel HorizontalAlignment="Left" Height="266" LastChildFill="False" VerticalAlignment="Top" Width="434"&g

我在scrollviewer中有一个网格,我想在添加内容时重新调整其大小。当前,如果我在视图外添加按钮,它不会调整大小。这很奇怪。。。但这不是我最关心的。我主要关心的是,如果我在网格程序中添加元素,它是否会调整大小。如果没有,那么我应该用什么来调整它的大小

这是目前的想法

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