Właśnie zacząłem eksperymentować z siatkami i natknąłem się na bardzo dziwne zachowanie i nie mogę tego naprawić. Najwyraźniej inni mają podobne problemy (według Google), ale nie było żadnych pomocnych komentarzy.Rozpraszacz siatki: ogranicz wysokość linii do rozmiaru okna
Mam siatkę z 2 rzędami. Po uruchomieniu dolny ma Hight
z 250. Górny rząd zajmuje resztę z *
. Gdy zmieniam rozmiar wierszy za pomocą splittera, zachowanie jest zgodne z oczekiwaniami dla górnego wiersza. Ale kiedy przeciągnę łuk w górę i minę okno programu, zawartość dolnego rzędu wypadnie z okna (= przesuń w dół, aż zniknie). Spodziewałbym się, że nie mogę uczynić każdego wiersza większego niż kontener nadrzędny.
<Grid x:Name="grid_main" ScrollViewer.VerticalScrollBarVisibility="Disabled" >
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition MinHeight="250" Height="250"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<GridSplitter x:Name="splitter"
ResizeDirection="Rows" Grid.Column="0" Grid.ColumnSpan="1" Grid.Row="0" Width="Auto"
Height="5" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="0" ResizeBehavior="BasedOnAlignment" />
<Grid Grid.Column="0" Grid.Row="0">
</Grid>
<Grid Grid.Column="0" Grid.Row="1">
</Grid>
</Grid>
To jest mój kod. Zawartość obu wierszy jest ponownie hostowana w siatkach i została usunięta ze względu na prostotę. Ponownie: zmiana rozmiaru w górnym wierszu działa dobrze. Ale dolny rząd można zmienić na nieskończoność. Działa zgodnie z oczekiwaniami, jeśli twardo kod MaxHeight
. Ale to musi zależeć od rozmiaru okna.
Dzięki za odpowiedź. To działa. Ale implementacja 'MinHeight' dla górnego rzędu okazuje się być ... trudna ... Kiedy mam do czynienia z WPF normalnie przeklinam sh * t z niego i w pewnym momencie mam naprawdę eleganckie rozwiązanie, które sprawia, że myślę" Wow , WPF jest naprawdę fajny ". Nie jestem pewien, czy osiągnę ten punkt na ten temat, chociaż ... – Jan
Wiem, co masz na myśli, tak samo czuję się przez większość czasu. Istnieje rozwiązanie definiujące MinHeight dla górnego rzędu, niezależnie od tego, czy jest eleganckie czy nie, jest dyskusyjne! Jeśli używasz MultiValueConverter, możesz przekazać mu ActualHeight of Grid, jak poprzednio, oraz górny rząd MinHeight i zwrócić różnicę. Użyj tej wartości jako maksymalnej wysokości w drugim rzędzie. –
Użyłem 'IValueConverter' do zastosowania przesunięcia. – Peter