Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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_Xaml - Fatal编程技术网

C# 如何在WPF中在运行时调整控件大小

C# 如何在WPF中在运行时调整控件大小,c#,wpf,xaml,C#,Wpf,Xaml,DockPanel有三个子控件,以水平方式并排放置: 1) 树景 2) RichTextBox 3) 网格 RichTextBox位于树视图和网格的中间。我使RichTextBox成为DockPanel的最后一个子项,并将LastChildFill属性设置为True。现在,由于网格可以在运行时关闭,我希望RichTextBox占据网格关闭后变为空的所有空间。但如果网格再次显示,RichTextBox应该从右侧收缩,以允许网格适应。如何做到这一点?我是WPF的新手。还有,如何隐藏网格?这是XAML

DockPanel有三个子控件,以水平方式并排放置: 1) 树景 2) RichTextBox 3) 网格

RichTextBox位于树视图和网格的中间。我使RichTextBox成为DockPanel的最后一个子项,并将LastChildFill属性设置为True。现在,由于网格可以在运行时关闭,我希望RichTextBox占据网格关闭后变为空的所有空间。但如果网格再次显示,RichTextBox应该从右侧收缩,以允许网格适应。如何做到这一点?我是WPF的新手。还有,如何隐藏网格?这是XAML

    <DockPanel Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" LastChildFill="True">
        <Border BorderThickness="1" DockPanel.Dock="Left" Height="Auto" HorizontalAlignment="Stretch" Margin="1" VerticalAlignment="Stretch" Width="Auto" CornerRadius="0" BorderBrush="#FF646464">
            <TreeView Name="TV" Height="Auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
        </Border>
        <Border Name="Notification_Pane"  BorderThickness="1" DockPanel.Dock="Right" Height="Auto" HorizontalAlignment="Stretch" Margin="1" VerticalAlignment="Stretch" Width="Auto" CornerRadius="0" BorderBrush="#FF646464">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="*" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="Auto" />
                </Grid.ColumnDefinitions>
                <Label Content="Notification" Margin="0" HorizontalAlignment="Stretch" VerticalAlignment="Top" Background="LemonChiffon" Grid.Row="0" Grid.Column="0"/>
                <Button Name="btn_Close" Content="X" Margin="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="LemonChiffon" Height="Auto" Width="Auto" Grid.Row="0" Grid.Column="1" Padding="10,0,10,0" BorderThickness="0" Cursor="Hand" Focusable="True" IsHitTestVisible="True" ClickMode="Release" Click="Button_Click" />
                <ScrollViewer Height="Auto" Name="ScrollViewer" Width="Auto" Margin="0" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2">
                    <StackPanel CanVerticallyScroll="True" Height="Auto" Name="Notification_Panel" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">

                    </StackPanel>
                </ScrollViewer>
            </Grid>
        </Border>
        <Border BorderThickness="1" Height="Auto" HorizontalAlignment="Stretch" Margin="1" VerticalAlignment="Stretch" Width="Auto" CornerRadius="0" BorderBrush="#FF646464">
            <RichTextBox Name="rtb" Height="Auto" Width="Auto" Grid.Row="2" HorizontalAlignment="Stretch" Grid.Column="1" Margin="0" />
        </Border>
    </DockPanel>

您可以使用Grid.Visibility属性显示和隐藏网格。 应使用以下代码执行此操作:

    private void Button_Click(object sender, RoutedEventArgs e) //X Button click event.
    {
        //grid is the name of our Grid Control we want to hide.
        grid.Visibility = System.Windows.Visibility.Collapsed;
    }
要再次显示网格,应使用以下代码:

grid.Visibility = System.Windows.Visibility.Visible;

RichTextBox控件将始终适合DockPanel控件。

谢谢。这真的很有帮助。”“系统、窗口、可见性、崩溃”是我丢失的东西。你能解释一下这个可视性是如何工作的吗。我所理解的是可见性。隐藏只是对用户隐藏控件,即用户无法访问它,但实际上它就在那里。这是真的吗?@Prasoon是的,这是真的<代码>**System.Windows.Visibility.Visibility**:显示元素。**System.Windows.Visibility.collazed**:不显示元素,也不在布局中为其保留空间。**System.Windows.Visibility.Hidden**:不显示元素,但是在布局中为元素保留空间。您可以找到更多内容,@Prasoon如果我的答案对您有帮助,请将其设置为答案?