Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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
C# 如何将groupbox定位到左侧,但在拉伸时允许groupbox增长到maxwidth_C#_Wpf - Fatal编程技术网

C# 如何将groupbox定位到左侧,但在拉伸时允许groupbox增长到maxwidth

C# 如何将groupbox定位到左侧,但在拉伸时允许groupbox增长到maxwidth,c#,wpf,C#,Wpf,我最近试图帮助我的朋友解决一个WPF布局问题,但我似乎也不知道如何让它工作,这似乎是一件很简单的事情,所以我想我应该在这里挖掘丰富的知识:)他想要的是groupbox 1自动调整为maxwidth的值,然后在groupbox右侧的空间增大时保持固定在左侧。为了简单起见,我现在只想发布一些关于这种情况的示例代码:)如果有人对这种情况有所了解,请回复。谢谢大家 <Window x:Class="GroupBoxTest.MainWindow" xmlns="http://schemas

我最近试图帮助我的朋友解决一个WPF布局问题,但我似乎也不知道如何让它工作,这似乎是一件很简单的事情,所以我想我应该在这里挖掘丰富的知识:)他想要的是groupbox 1自动调整为maxwidth的值,然后在groupbox右侧的空间增大时保持固定在左侧。为了简单起见,我现在只想发布一些关于这种情况的示例代码:)如果有人对这种情况有所了解,请回复。谢谢大家

<Window x:Class="GroupBoxTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="147" Width="525">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="151*" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="148" />
        <ColumnDefinition Width="355*" />
    </Grid.ColumnDefinitions>
    <GroupBox Header="groupBox1" Margin="14,12,41,8" Name="groupBox1" MaxWidth="450" Grid.Column="1">
        <Grid />
    </GroupBox>
    <GroupBox Header="groupBox2" Margin="12,12,13,8" Name="groupBox2">
        <Grid />
    </GroupBox>
</Grid>


您可以使用以下样式创建解决方案:

<GroupBox Header="groupBox1" Margin="14,12,41,8" Name="groupBox1" MaxWidth="450" Grid.Column="1">
    <GroupBox.Style>
        <Style TargetType="GroupBox">
             <Style.Triggers>
                <Trigger Property="ActualWidth" Value="450">
                        <Setter Property="Width" Value="450"/>
                        <Setter Property="HorizontalAlignment" Value="Left"/>   
                    </Trigger>       
                 </Style.Triggers>
            </Style>    
        </GroupBox.Style>
    <Grid />
</GroupBox>

将MaxWidth=“450”移动到ColumnDefinition并将其从GroupBox中删除

<Grid>
    <Grid.RowDefinitions>
       <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
       <ColumnDefinition Width="148" />
       <ColumnDefinition Width="*" MaxWidth="450" />
    </Grid.ColumnDefinitions>
    <GroupBox 
        Name="groupBox1" 
        Header="groupBox1"
        Margin="14,12,41,8"
        Grid.Column="1">
    </GroupBox>
    <GroupBox Header="groupBox2" Margin="12,12,13,8" Name="groupBox2">
    </GroupBox>
</Grid>

在列定义上设置
MaxWidth=“450”
将适用于
GroupBox

<ColumnDefinition Width="355*" MaxWidth="450"/>

谢谢H.B.的回答。当窗口缩小时,分组框似乎不会回避。我还没有玩过触发器,所以我将继续深入研究,但非常感谢您的回复!!哦,我没有看到缩小尺寸时出现的剪裁,看起来它实际上也在以另一种方式工作,必须有一种方法来解决这个问题…@Dan:你可以在你的问题中注意到,你不需要网格列按照预期的实际尺寸进行调整,使用此解决方案,列中的所有元素将仅延伸到450宽,而不仅仅是分组框。
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="151*" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="148" />
        <ColumnDefinition Width="355*" />
    </Grid.ColumnDefinitions>
    <Rectangle Name="sizeElement" Fill="Transparent" Margin="14,12,41,8" Grid.Column="1"/>
    <GroupBox Header="groupBox1" Margin="14,12,41,8" Name="groupBox1" MaxWidth="450" Grid.Column="1"
              HorizontalAlignment="Left"
              Width="{Binding ElementName=sizeElement, Path=ActualWidth}">
        <Grid />
    </GroupBox>
    <GroupBox Header="groupBox2" Margin="12,12,13,8" Name="groupBox2">
        <Grid />
    </GroupBox>
</Grid>