WPF隐藏控件后,怎么让其上部的控件空间自动撑高

隐藏底部的日志显示控件_StackPanel3后,stackPanel1会自动撑高;

关键属性设置:

xml 复制代码
 <Grid.RowDefinitions>
     <!-- 上部控件占满剩余空间 -->
     <RowDefinition Height="*" />

     <!--按钮部分  -->
     <RowDefinition Height="auto" />

     <!--日志部分,会被隐藏的 -->
     <RowDefinition Height="auto" />
 </Grid.RowDefinitions>

WPF xaml页面参考代码

xml 复制代码
<Window x:Class="WpfAppYolo11_test1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfAppYolo11_test1"
        mc:Ignorable="d"
        Title="MainWindow" Height="900" Width="1300" WindowStartupLocation="CenterScreen">
    <Grid  x:Name="grid1">
        <Grid.RowDefinitions>
            <!-- 上部控件占满剩余空间 -->
            <RowDefinition Height="*" />

            <!--按钮部分  -->
            <RowDefinition Height="auto" />

            <!--日志部分,会被隐藏的 -->
            <RowDefinition Height="auto" />
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="0" Name="stackPanel1" Background="LightGreen"  >
            <!--<Viewbox x:Name="testView"  >
                 </Viewbox>-->
            <Image x:Name="imgShow"   MinHeight="690"  VerticalAlignment="Stretch"  Stretch="Uniform" HorizontalAlignment="Center"    />

        </StackPanel>
        <StackPanel Grid.Row="1"  Name="_StackPanel2" >
            <Border BorderThickness="2" BorderBrush="Green" Padding="2">
                <StackPanel>
                    <DockPanel>
                        <Button   Content="识别图" Click="Button_Click" FontSize="16"   Margin="5" HorizontalAlignment="Left"   VerticalAlignment="Top"/>
                        <Button   Content="下一张图" Click="Button_Click_5" FontSize="16"   Margin="5" HorizontalAlignment="Left"   VerticalAlignment="Top"/>
                        <Button   Content="上一张图" Click="Button_Click_6" FontSize="16"   Margin="5" HorizontalAlignment="Left"   VerticalAlignment="Top"/>
                        
                        <Button x:Name="btnVideoDetection"   Content="识别视频" Click="Button_Click_2" FontSize="16"   Margin="5" HorizontalAlignment="Left"   VerticalAlignment="Top"/>
                        <Button x:Name="btnVideoCapter"   Content="识别视频帧" Click="btnVideoCapter_Click" FontSize="16"   Margin="5" HorizontalAlignment="Left"   VerticalAlignment="Top"/>
                        <Button x:Name="btnVideoDetection2"   Content="打开摄像头" Click="btnVideoDetection2_Click" FontSize="16"  Margin="5" HorizontalAlignment="Left"   VerticalAlignment="Top"/>
                        <Button   Content="停止视频检测" Click="Button_Click_3" FontSize="16" Width="100" Margin="5" HorizontalAlignment="Left"   VerticalAlignment="Top"/>
                        <Button   Content="清空图片" Click="Button_Click_Clear" FontSize="16" Width="100" Margin="5" HorizontalAlignment="Left"   VerticalAlignment="Top"/>
                        <TextBox x:Name="txtbox2" Background="GreenYellow" FontSize="15" Width="400" HorizontalAlignment="Left" Height="25" TextWrapping="Wrap" />
                        <Button   Content="窗1" Click="Button_Click_4" FontSize="16"  Margin="5" HorizontalAlignment="Left"   VerticalAlignment="Top"/>
                    </DockPanel>
                    <DockPanel>
                        <Button x:Name="btnGame1"  Content="启动游戏" Click="btnGame1_Click" FontSize="16"  Margin="5" HorizontalAlignment="Left"   VerticalAlignment="Top"/>
                        <Button x:Name="btnGameDetectionStop"  Content="停止按钮查找" Click="btnGameDetectionStop_Click" FontSize="16"  Margin="5" HorizontalAlignment="Left"   VerticalAlignment="Top"/>
                        <TextBox x:Name="txtbox3" Background="GreenYellow" FontSize="15" Width="200" HorizontalAlignment="Left" Height="25" TextWrapping="Wrap" />
                        <CheckBox x:Name="isShowLog"   IsChecked="True" Click="ShowLogCtrl_Click" Content="显示日志" Height="20" Width="90"/>
                    </DockPanel>                     
                </StackPanel>
            </Border>
        </StackPanel>

 <!--日志部分,会被隐藏的 -->
        <StackPanel Grid.Row="2" Name="_StackPanel3">
            <TextBox     x:Name="txtbox1" Height="115" HorizontalAlignment="Stretch"    Background="Yellow" VerticalScrollBarVisibility="Auto" FontSize="12"     TextWrapping="Wrap" />
        </StackPanel>
    </Grid>
</Window>
csharp 复制代码
  /// <summary>
  /// 控制日志是否显示
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void ShowLogCtrl_Click(object sender, RoutedEventArgs e)
  {
      if (this.isShowLog.IsChecked!=null && this.isShowLog.IsChecked.Value )
      {       
          _StackPanel3.Visibility = Visibility.Visible;
          
      }
      else
      {
          _StackPanel3.Visibility = Visibility.Collapsed;//隐藏     
           this.Height +=1;//通知图片控件更新布局,更新尺寸     
      }
相关推荐
心平气和量大福大3 小时前
C#-WPF-Window主窗体
开发语言·c#·wpf
FuckPatience8 小时前
Telerik UI for WPF 值不能为null。参数名:key
ui·wpf
lindexi13 小时前
WPF 笔迹延迟优化从硬件到软件的全链路分析
wpf
weixin_727535621 天前
双Token认证体系深度拆解:Spring Security + JWT + Redis
redis·spring·wpf
liuxiaowei32 天前
Winform+WPF双框架实战:喷涂工艺SCADA上位机从0到1搭建(附采集监控源码+车间踩坑实录)
大数据·hadoop·wpf
贺国亚2 天前
模型训练-分布式与GPU调度
分布式·wpf
不羁的木木3 天前
HarmonyOS技术精讲-Connectivity Kit:实战——多屏协同与文件快传应用
华为·wpf·harmonyos
某不知名網友4 天前
C++ 从零实现负载均衡式在线 OJ 判题系统|分布式沙箱判题实战
wpf
fogota4 天前
【AI】C# .NET8 WPF 第三方DLL引用配置(编译不丢失、不自动删除)
c#·.net·wpf·dll
不羁的木木4 天前
HarmonyOS技术精讲-Connectivity Kit(短距通信服务):初识统一短距通信框架
华为·wpf·harmonyos