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