Dans .NET 3.5, j'ai une grille dans une fenêtre. Je remplis cette grille avec des boutons. Lorsque les boutons remplissent la grille et sortent de la vue, la grille n'affiche pas la barre de défilement. J'ai défini le défilement vertical des grilles pour qu'il soit visible mais il ne s'affiche toujours pas.
<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>
Le code qui ajoute les boutons:
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++;
}
Grid
ne prend pas en charge la fonctionnalité de défilement. Si vous voulez faire défiler quelque chose dont vous avez besoin ScrollViewer
control
<ScrollViewer HorizontalScrollBarVisibility="Visible">
<Grid x:Name="MyGrid" HorizontalAlignment="Left" Height="535" VerticalAlignment="Top" Width="736" Margin="10,63,0,0">
<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>
</ScrollViewer>