我希望在我的网格上有一个垂直滚动条,这看起来很简单,但由于某种原因它不会起作用。当我将VerticalScrollBarVisibility设置为visible时,它会显示但不执行任何操作。当它设置为自动时,它根本不显示。
我已阅读本网站的建议,但似乎对我不起作用。我知道行应该设置为固定高度或*并且我有两者的组合。我也尝试设置网格的最大高度和滚动条的高度,如同建议的那样,但这两者都没有。
这就是我设置它的方式(网格在标签内):
</TabItem.Header>
<ScrollViewer VerticalScrollBarVisibility="Auto">
<Grid Name="CSGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="400"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="20"/>
<RowDefinition Height="5"/>
<RowDefinition Height="1"/>
<RowDefinition Height="20"/>
<RowDefinition Height="20"/>
<RowDefinition Height="20"/>
...
然后我有大量的行,其内容我通过C#代码设置,如果这有所不同。所有的高度都设置为20.之后我在网格中也有一些矩形和文本块,我想象的任何东西都不会有问题 - 除非它们会以某种方式产生影响?
在代码中,我将文本添加到行中,如下所示:
TextBlock hist1 = new TextBlock();
TextBlock hist2 = new TextBlock();
TextBlock hist3 = new TextBlock();
TextBlock hist4 = new TextBlock();
TextBlock hist5 = new TextBlock();
string [] allHist = File.ReadAllLines(“MedicalHistory.txt”);
hist1.Text = allHist[0];
hist2.Text = allHist[1];
hist3.Text = allHist[2];
hist4.Text = allHist[3];
hist5.Text = allHist[4];
CSGrid.Children.Add(hist1);
CSGrid.Children.Add(hist2);
CSGrid.Children.Add(hist3);
CSGrid.Children.Add(hist4);
CSGrid.Children.Add(hist5);
Grid.SetColumn(hist1, 0);
Grid.SetColumn(hist2, 0);
Grid.SetColumn(hist3, 0);
Grid.SetColumn(hist4, 0);
Grid.SetColumn(hist5, 0);
Grid.SetRow(hist1, 5);
Grid.SetRow(hist2, 6);
Grid.SetRow(hist3, 7);
Grid.SetRow(hist4, 8);
Grid.SetRow(hist5, 9);
非常感谢任何帮助
答案 0 :(得分:4)
使用ScrollViewer.CanContentScroll =&#34; True&#34;在您的网格中:
<ScrollViewer VerticalScrollBarVisibility="Auto">
<Grid Name="CSGrid" ScrollViewer.CanContentScroll="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="400"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="20"/>
<RowDefinition Height="5"/>
<RowDefinition Height="1"/>
<RowDefinition Height="20"/>
<RowDefinition Height="20"/>
<RowDefinition Height="20"/>
...
答案 1 :(得分:2)
您应该将RowDefinition
Height
属性设置为超过TabControl
高度。
我为你编写了这个并且工作正常:
<Window x:Class="TestApp13.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:src="clr-namespace:TestApp13"
Title ="Title" Height="600" Width="800">
<TabControl>
<TabItem Header="Tab 1">
<ScrollViewer VerticalScrollBarVisibility="Auto">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="200"/>
<RowDefinition Height="200"/>
<RowDefinition Height="200"/>
<RowDefinition Height="200"/>
<RowDefinition Height="200"/>
<RowDefinition Height="2000"/>
</Grid.RowDefinitions>
<Button Width="100" Height="30" Grid.Row="0"/>
<Button Width="100" Height="30" Grid.Row="1"/>
<Button Width="100" Height="30" Grid.Row="2"/>
<Button Width="100" Height="30" Grid.Row="3"/>
<Button Width="100" Height="30" Grid.Row="4"/>
<Button Width="100" Height="30" Grid.Row="5"/>
</Grid>
</ScrollViewer>
</TabItem>
</TabControl>
答案 2 :(得分:0)
<Window x:Class="TestApp13.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:src="clr-namespace:TestApp13"
Title ="Title" Height="600" Width="800">
<TabControl>
<TabItem Header="Tab 1">
<ScrollViewer Hight="500">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="200"/>
<RowDefinition Height="200"/>
<RowDefinition Height="200"/>
<RowDefinition Height="200"/>
<RowDefinition Height="200"/>
<RowDefinition Height="2000"/>
</Grid.RowDefinitions>
<Button Width="100" Height="30" Grid.Row="0"/>
<Button Width="100" Height="30" Grid.Row="1"/>
<Button Width="100" Height="30" Grid.Row="2"/>
<Button Width="100" Height="30" Grid.Row="3"/>
<Button Width="100" Height="30" Grid.Row="4"/>
<Button Width="100" Height="30" Grid.Row="5"/>
</Grid>
</ScrollViewer>
</TabItem>
</TabControl>