Mám celkom jednoduché rozloženie, pozri:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="200"></ColumnDefinition>
<ColumnDefinition Width="5"></ColumnDefinition>
<ColumnDefinition Width="Auto" MinWidth="50"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Border Grid.Column="0"
BorderBrush="Red"
BorderThickness="2">
<!-- Any picture-->
<Image Source="/Resources/PreviewTest.png"></Image>
</Border>
<GridSplitter Grid.Column="1"
Width="5"
HorizontalAlignment="Center"
VerticalAlignment="Stretch"
ResizeBehavior="PreviousAndNext"></GridSplitter>
<Expander Grid.Column="2"
ExpandDirection="Left"
BorderBrush="RoyalBlue"
BorderThickness="2">
<!-- Any picture-->
<Image Source="/Resources/PreviewTest.png"></Image>
</Expander>
</Grid>
Problém: keď ťahám GridSplitter
doľava, pravý stĺpec zhasne od okraja okna, ako je znázornené na animácii. Zistil som, že sa to stane, keď je šírka tretieho stĺpca nastavená na „Auto“ (Width="Auto"
). Keby som to nastavil Width="*"
GridSplitter
funguje dobre a tretí Column
neodíde z okienka. Prečo kedy Width="Auto"
to sa stáva?
odpovede:
7 pre odpoveď č. 1Váš problém je spôsobený tým, že jeden z vašich ColumnDefinition
s je nastavené na Auto
, Čo sa deje, je to, keď dosiahne prvý stĺpec MinWidth
hodnotu, môže to byť menšie. Avšak, ak budete pohybovať ďalej GridSlitter
, potom musí stúpať pravý stĺpec. Keď to necháte narásť na akúkoľvek veľkosť, dostanete svoj aktuálny problém.
Jediné, čo musíte urobiť, aby ste to napravili, je správne napraviť ColumnDefinition.Width
majetok do *
hodnotu. Týmto spôsobom nemôže "vyrastať z." Grid
viac. Ak potrebujete, môžete ovládať konečné veľkosti stĺpcov pomocou ColumnDefinition.MaxWidth
vlastnosť. Skúste to:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="200" />
<ColumnDefinition Width="5" />
<ColumnDefinition Width="*" MinWidth="50" />
</Grid.ColumnDefinitions>
<Border Grid.Column="0" BorderBrush="Red" BorderThickness="2">
<Image Source="/Resources/PreviewTest.png" />
</Border>
<GridSplitter Grid.Column="1" Width="5" HorizontalAlignment="Center" VerticalAlignment="Stretch" ResizeBehavior="BasedOnAlignment" />
<Expander Grid.Column="2" ExpandDirection="Left" BorderBrush="RoyalBlue" BorderThickness="2">
<Image Source="/Resources/PreviewTest.png" />
</Expander>
</Grid>