W .NET 3.5 Mam siatkę w oknie. Zapełniam tę tabelę przyciskami. Kiedy przyciski wypełnią siatkę i znikną z widoku, Grid nie wyświetla paska przewijania. Ustawiłem pionowy zwój siatki, aby był widoczny, ale nadal nie jest wyświetlany.Siatka WPF nie wyświetlająca pasków przewijania
<Window x:Name="Window" x:Class="MergeToCheck.CheckList"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d" Loaded="Window_Loaded" ScrollViewer.VerticalScrollBarVisibility="Disabled"
ResizeMode="NoResize" ShowInTaskbar="False" Topmost="True" WindowStyle="None"
Height="671" Width="846.299" BorderThickness="5">
<Grid>
<Grid x:Name="MyGrid" HorizontalAlignment="Left" Height="535" VerticalAlignment="Top" Width="736" Margin="10,63,0,0" ScrollViewer.CanContentScroll="True" ScrollViewer.HorizontalScrollBarVisibility="Visible">
<Grid.Resources>
<Style TargetType="{x:Type Panel}">
<Setter Property="Margin" Value="0,0,0,6" />
</Style>
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
</Grid>
</Grid>
</Window>
Kod który dodaje przyciski:
CheckList CheckListCtrl = new CheckList();
System.Windows.Controls.Button btn;
int row = 0;
int col = 0;
CheckListCtrl.MyGrid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(100) });
foreach(var c in list)
{
btn = new System.Windows.Controls.Button();
btn.FontSize = 15;
btn.FontWeight = FontWeights.UltraBold;
btn.Content = c.Name;
btn.Style = System.Windows.Application.Current.FindResource(System.Windows.Controls.ToolBar.ButtonStyleKey) as Style;
btn.BorderBrush = new SolidColorBrush(Colors.Black);
btn.BorderThickness = new Thickness(2);
btn.MinWidth = 145;
btn.MaxWidth = 145;
btn.MinHeight = 95;
btn.MaxHeight = 95;
btn.SetValue(Grid.RowProperty, row);
btn.SetValue(Grid.ColumnProperty, col);
CheckListCtrl.MyGrid.Children.Add(btn);
if ((col + 1) % CheckListCtrl.MyGrid.ColumnDefinitions.Count == 0)
{
col = 0;
row++;
CheckListCtrl.MyGrid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(100) });
}
else
col++;
}
Jeśli twoja siatka ma wystarczająco dużo miejsca, aby pokazać wszystkie przedmioty, paski przewijania nie pojawią się. Paski przewijania pojawiają się tylko wtedy, gdy jest więcej elementów niż spacja. Czy na pewno jest więcej przedmiotów niż miejsce w twojej siatce? – Sonhja
Tak na 100% pewności, że zabrakło miejsca, ale jeśli ustawię ScrollViewer.HorizontalScrollBarVisibility = "Visible", powinien on wyświetlać paski przewijania, niezależnie od tego, czy ma wystarczająco dużo miejsca. – CathalMF
Siatka nie zawiera żadnych pasków przewijania. Jeśli chcesz się przewijać, potrzebujesz 'ScrollViewer' jak' ... ScrollViewer> ' –
dkozl