/ / Referenčná šírka WPF stĺpca mriežky - wpf, xaml

Referenčná šírka WPF stĺpca mriežky - wpf, xaml

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ď č. 1

Na 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.