Je tu elegantnejšia cesta ako tá, ktorú som našielodkazovať na šírku mriežkového stĺpca pre konštrukciu vloženej mriežky? Nemôžem pristupovať k skutočnej šírke stĺpca určitej mriežky lepším spôsobom? Mohol by som tiež mať obojsmerné spojenie, takže ak sa stĺpec v detskej mriežke dostane príliš široký, stĺpec v nadradenej vrstve sa rozširuje, aby sa zmestil do obsahu?
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="0.5*" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="0.5*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="26" />
<RowDefinition Height="26" />
</Grid.RowDefinitions>
<Label Grid.Row="0" Grid.Column="0" x:Name="col0" Content="This"/>
<Label Grid.Row="0" Grid.Column="1" x:Name="col1" Content="is"/>
<Label Grid.Row="0" Grid.Column="2" x:Name="col2" Content="a"/>
<Label Grid.Row="0" Grid.Column="3" x:Name="col3" Content="test."/>
<Grid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{Binding Path=ActualWidth, ElementName=col0}" />
<ColumnDefinition Width="{Binding Path=ActualWidth, ElementName=col1}" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
</Grid.RowDefinitions>
<Label Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" Content="The" />
<Label Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" Content="same width" />
</Grid>
</Grid>
</Page>
odpovede:
0 pre odpoveď č. 1Na Grid
Ovládací prvok podporuje množstvo "Rovnakej veľkosti" vlastnosti, ktoré umožňujú určiť, ktoré stĺpce alebo riadky v Grid
všetci mali byť rovnakej veľkosti, bez toho aby ste museli starať o akých rozmerov.
Ak chcete použiť, pridajte IsSharedSizeScope
pripojený vlastnosť Grid
ovládanie:
<Grid Name="Root" Grid.IsSharedSizeScope="True">
. . .
</Grid>
Potom na stĺpce, ktoré chcete mať rovnakú veľkosť, zadajte názov pre SharedSizeGroup
ubytovanie:
<Grid Name="Root" Grid.IsSharedSizeScope="True">
<Grid Name="InnerGrid1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="Column1" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="5" />
<ColumnDefinition Width="Auto" SharedSizeGroup="Column2" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="5" />
</Grid.ColumnDefinitions>
. . .
</Grid>
<Grid Name="InnerGrid2>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="Column1" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="5" />
<ColumnDefinition Width="Auto" SharedSizeGroup="Column2" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="5" />
</Grid.ColumnDefinitions>
. . .
</Grid>
</Grid>
V tomto príklade, existujú dve rôzne stĺpce v dvoch rôznych Grids
to bude vždy rovnakej veľkosti.