我在第一列有GridSplitter的窗口中有3列网格。我想将第一列的MaxWidth设置为父窗口或页面的三分之一,如果可能,我宁愿在XAML中执行此操作。如何在XAML中根据窗口或屏幕大小设置网格列MaxWidth
这是XAMLPad(或类似的)中的一些示例XAML,它显示了我在做什么。
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="Column1" Width="200"/>
<ColumnDefinition x:Name="Column2" MinWidth="50" />
<ColumnDefinition x:Name="Column3" Width="{ Binding ElementName=Column1, Path=Width }"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Background="Green" />
<GridSplitter Grid.Column="0" Width="5" />
<Label Grid.Column="1" Background="Yellow" />
<Label Grid.Column="2" Background="Red" />
</Grid>
</Page>
正如你可以看到,右边的列宽绑定到第一列的宽度,所以当你使用分离器将左立柱,右列做同样的:) 如果滑动最后它会滑过页面/窗口的一半并移到窗口的右侧,推开第2列和第3列。
我想通过将第1列的MaxWidth设置为三分之一的窗口宽度(或类似的东西)。我可以很容易地在代码中执行此操作,但是如何在“仅限XAML”中执行此操作?
编辑:大卫施密特建议使用SharedSizeGroup而不是绑定,这是一个很好的建议。我的示例代码应该是这样的,那么:
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<Grid IsSharedSizeScope="True">
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="Column1" SharedSizeGroup="ColWidth" Width="40"/>
<ColumnDefinition x:Name="Column2" MinWidth="50" Width="*" />
<ColumnDefinition x:Name="Column3" SharedSizeGroup="ColWidth"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Background="Green" />
<GridSplitter Grid.Column="0" Width="5" />
<Label Grid.Column="1" Background="Yellow" />
<Label Grid.Column="2" Background="Red" />
</Grid>
</Page>
请使用SharedSizeGroup而不是绑定到另一列的宽度! – 2008-10-03 22:48:50