Cat*_*lMF 27 c# wpf grid scrollbar .net-3.5
在.NET 3.5中,我在窗口中有一个网格.我用Buttons填充这个Grid.当按钮填满网格并离开视图时,网格不显示滚动条.我已将网格垂直滚动设置为可见但仍未显示.
<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>
Run Code Online (Sandbox Code Playgroud)
添加按钮的代码:
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++;
}
Run Code Online (Sandbox Code Playgroud)
dko*_*ozl 70
Grid不支持滚动功能.如果你想滚动你需要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>
Run Code Online (Sandbox Code Playgroud)
一般来说,需要告诉 ScrollViewer 它小于其内容。因此,仅添加 ScrollViewer 以使控件可滚动并不总是足够的。ScrollViewer 知道,如果其封闭控件具有固定或最大尺寸,或者其本身具有固定高度或最大高度,则它会较小,如下所示
<ScrollViewer Height=500 HorizontalScrollBarVisibility="Visible">
...
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
,或者它的 Height (或 MaxHeight)是否绑定到适当的东西。
水平滚动条也是如此,您可以将其设置为可见,如果 ScrollViewer 的宽度不受限制,ScrollViewer 将扩展到其内容的大小。如果滚动条可见性为“自动”,则不会显示滚动条;如果为“可见”,则将显示禁用的滚动条。(请注意,HorizontalScrollbarVisibility 默认情况下为“禁用”。)要获得有用的水平滚动条,请限制 ScrollViewer 的宽度并将其 HorizontalScrollbarVisibility 设置为至少“自动”。
| 归档时间: |
|
| 查看次数: |
43560 次 |
| 最近记录: |