运行时WPF窗口变小

yk9xbfzb  于 2023-05-01  发布在  其他
关注(0)|答案(1)|浏览(199)

WPF窗口的宽度在运行时较小。大小在xaml中使用WidthHeight属性设置。

<Window x:Class="TestGUIGroesse.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"
        mc:Ignorable="d"
        Title="Training"
        Width="910" 
        Height="720">
    <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="35"/>
                <RowDefinition Height="30"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="30"/>
                <ColumnDefinition Width="850"/>
                <ColumnDefinition Width="30"/>
        </Grid.ColumnDefinitions>
        <Button Grid.Column="1" Grid.Row="1"/>
   </Grid>

当然,我可以设置SizeToContent属性。那就成功了。但最后,目标是隐藏/显示一个网格列:该列包含一个dockpanel,并且可以由用户显示/隐藏。在这种情况下,网格的Width被后面代码中的列的宽度重置。当我设置SizeToContent属性时,我想要隐藏的列仍然显示。有道理,但这不是我想要的。
有什么主意吗?会很棒的。

yebdmbv4

yebdmbv41#

GridSplitter可能是您正在寻找的吗?或者只是处理一些列定义宽度属性?
<GridSplitter x:Name="gridsplitter_name" Margin="0,0,0,width of column at design-time" d:LayoutOverrides="VerticalAlignment for columns, horizontal for rows" Width="integer" ResizeDirection="Columns or Rows" SnapsToDevicePixels="True" Grid.Column="the column on the righthand side of the grid line you want to move" HorizontalAlignment="Left"/>
这将允许用户单击并拖动网格列以显示/隐藏拆分器两侧列的内容,您还可以在XAML中设置网格的名称:

<Grid x:Name="gridname">
    ....

然后在codebhind中的button click方法:

grid.ColumnDefinitions[column to hide].Width = new GridLength((double)(((double)grid.ActualWidth) - (double)(grid.ActualWidth - desired_width)));
    grid.ColumnDefinitions[column to show].Width = new GridLength(desired_width);

//在gridSplitter的codebhind中的gridsplitter。return new Thickness(0,0,desired_width,0);
哦,如果你想在启动时设置窗口的设计尺寸,只需在XAML =)中的窗口宽度和高度值前面添加一个'd:'即可

相关问题