당신은 당신의
Grid
에 열을 생성하고 설정할 수 있습니다
MaxWidth
100 : 당신이 전체 Grid
의 Width
을 제한하려면
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition MaxWidth="100"/>
<ColumnDefinition MaxWidth="100"/>
<ColumnDefinition MaxWidth="100"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" Background="Red" />
<Border Grid.Column="1" Background="Green" />
<Border Grid.Column="2" Background="Blue" />
</Grid>
또는 다음이 작동합니다 :
<Grid MaxWidth="300">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" Background="Red" />
<Border Grid.Column="1" Background="Green" />
<Border Grid.Column="2" Background="Blue" />
</Grid>
에서 이 경우 사용 가능한 공간 (최대 300)은 모든 열 사이에서 동등하게 나뉩니다.
더 복잡한 규칙에 대한 또 다른 해결책은 사용자 정의 IValueConverter
수 있습니다
편집 : XAML 다음
public class WidthConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var width = (double)value;
if (width > 300)
return 100;
else
return 30;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
과 : 귀하의 답변에 대한
<Grid>
<Grid.Resources>
<local:WidthConverter x:Key="WidthConverter"/>
<Style TargetType="{x:Type ColumnDefinition}">
<Setter Property="Width" Value="{Binding ElementName=myWindow, Path=ActualWidth, Converter={StaticResource WidthConverter}}"/>
</Style>
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" Background="Red" />
<Border Grid.Column="1" Background="Green" />
<Border Grid.Column="2" Background="Blue" />
</Grid>
감사합니다,하지만 난 싶지 않아 컨트롤의 너비를 동적으로 변경합니다. 정말 "단계별로"너비를 변경하고 싶습니다. – user1130329
~ _ steps_을 (를) 정의 할 수 있습니까? – dkozl
예 - 필자가 쓴대로 테두리 너비를 100으로 설정하고 창 너비가 300보다 작 으면 테두리를 30 너비로 설정합니다. 다른 예 : Word를 열고 창 크기를 변경하십시오. 툴바는 창 너비에 따라 내용을 변경합니다 (일부 항목은 "압축"됨). 이것은 시뮬레이션하려는 효과입니다. – user1130329