隐藏底部的日志显示控件_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;//通知图片控件更新布局,更新尺寸
}