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
调整WPF窗口大小时,如何控制首先折叠的内容_Wpf_Window - Fatal编程技术网

调整WPF窗口大小时,如何控制首先折叠的内容

调整WPF窗口大小时,如何控制首先折叠的内容,wpf,window,Wpf,Window,我正在构建一个WPF应用程序,上面有很多控件。我面临的要求是,当用户调整窗口大小(宽度方向)时,控制首先折叠/展开的内容。 我试图找出是否有某种方式可以让我的控件布局,以“免费”获得此功能-这意味着不必连接到WM_SIZE和WM_GETMINMAXINFO消息并手动处理-哎哟,很痛苦 下面是一个简单的例子: <Window x:Class="DeleteMe.Window8" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/prese

我正在构建一个WPF应用程序,上面有很多控件。我面临的要求是,当用户调整窗口大小(宽度方向)时,控制首先折叠/展开的内容。 我试图找出是否有某种方式可以让我的控件布局,以“免费”获得此功能-这意味着不必连接到WM_SIZE和WM_GETMINMAXINFO消息并手动处理-哎哟,很痛苦

下面是一个简单的例子:

<Window x:Class="DeleteMe.Window8"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window8" Height="150" Width="800">
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="220" />
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>

    <StackPanel Orientation="Horizontal" Margin="5,0" HorizontalAlignment="Center" Grid.Column="0" >
        <Button Width="50" Height="50" Content="Btn1"/>
        <Button Width="50" Height="50" Content="Btn2"/>
        <Button Width="50" Height="50" Content="Btn3"/>
        <Button Width="50" Height="50" Content="Btn4"/>
    </StackPanel>

    <StackPanel Orientation="Horizontal" Grid.Column="1">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
        </Grid>
        <Rectangle HorizontalAlignment="Left" Width="1" Height="Auto" Fill="Gray"/>
        <Border Grid.Column="0" Margin="5" BorderThickness="1" HorizontalAlignment="Center" Background="Transparent" Height="100" Width="100">
            <Image Source="/heart_on.png"/>
        </Border>
        <Grid Grid.Column="1">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <TextBlock Grid.Row="0" Margin="10,10,0,0" Text="TEXT1"/>
            <StackPanel Grid.Row="1" Margin="10,5,0,0" Orientation="Vertical" HorizontalAlignment="Left">
                <TextBlock HorizontalAlignment="Left" Text="TEXT2"/>
                <StackPanel HorizontalAlignment="Left" Orientation="Vertical" >
                    <StackPanel Orientation="Horizontal" Margin="0,2">
                        <TextBlock HorizontalAlignment="Left" Text="TEXT3:" />
                        <TextBlock Margin="2,0" HorizontalAlignment="Left" Text="TEXT4"/>
                    </StackPanel>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock HorizontalAlignment="Left" Text="TEXT5:" />
                        <TextBlock Margin="2,0" HorizontalAlignment="Left" Text="TEXT6"/>
                    </StackPanel>
                </StackPanel>
            </StackPanel>
            <Grid Grid.Row="2" >
                <StackPanel Orientation="Horizontal" >
                    <Grid Margin="7" Width="270" Height="20" VerticalAlignment="Top">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="Auto" />
                        </Grid.ColumnDefinitions>

                        <TextBlock VerticalAlignment="Center" Grid.Column="0" Margin="5,0" Text="0" />
                        <Slider Grid.Column="1" VerticalAlignment="Center" Width="Auto" Margin="5,0,5,0" Value="0" Minimum="0"/>
                        <TextBlock VerticalAlignment="Center" Grid.Column="2" Margin="5,0" Text="1" />
                    </Grid>
                </StackPanel>
            </Grid>                       
        </Grid>
    </StackPanel>

    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Grid.Column="2" Width="Auto">
        <TextBlock VerticalAlignment="Center">
                Some other controls in here ...
            </TextBlock>
    </StackPanel>

</Grid>

这里还有其他一些控件。。。

更具体地说,我需要在收缩窗口时首先折叠图像,然后“此处的其他控件…”部分和整个文本部分应该相等地折叠。 左侧应该始终可见,但我已经通过设置整个窗口的最小宽度来做到这一点


谢谢。

听起来您需要一个,这个面板像堆叠面板一样堆叠,但如果空间不足,则包裹到新的行或列。

我正在试图找到一种方法来控制折叠的内容(即隐藏)。在上面的例子中,你开始缩小窗口,首先要折叠的是图像。WrapPanel不会隐藏图像,它会尝试为其创建新行或新列,正如您所提到的。