c# wpf grid .net-3.5 scrollbar

c# - WPF Grid no muestra barras de desplazamiento



.net-3.5 scrollbar (1)

En .NET 3.5 tengo una cuadrícula en una ventana. Estoy poblando esta cuadrícula con botones. Cuando los botones llenan la cuadrícula y se salen de la vista, la cuadrícula no muestra la barra de desplazamiento. He configurado el desplazamiento vertical de cuadrículas para que sea visible pero aún no se muestra.

<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>

El código que añade los botones:

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 no admite la funcionalidad de desplazamiento. Si desea desplazar algo, necesita el control ScrollViewer

<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>