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