/ / WPF GridSplitter podivné správanie, keď je šírka stĺpca = „Auto“ - wpf, šírka stĺpca, mriežka

WPF GridSplitter podivné správanie pri šírke stĺpca = "Auto" - wpf, šírka stĺpca, gridsplitter

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?

demonštrácie

odpovede:

7 pre odpoveď č. 1

Váš problém je spôsobený tým, že jeden z vašich ColumnDefinitions 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>