c# - ScrollViewer 不适用于 wpf 中的网格

标签 c# wpf

我想在我的网格上有一个垂直滚动条,这看起来很简单,但出于某种原因它就是行不通。当我将 VerticalScrollBarVisibility 设置为可见时,它会显示但什么也不做。当它设置为自动时,它根本不会显示。

我已阅读此网站上的建议,但它似乎对我不起作用。我知道行应该设置为固定高度或 * 并且我有两者的组合。我还尝试按照建议设置网格的最大高度和滚动条的高度,但这些都不起作用。

我是这样设置的(网格在选项卡内):

</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。之后我在网格中还有一些矩形和文本 block ,我认为没有什么是有问题的 - 除非它们会以某种方式有所作为?

在代码中,我将文本添加到行中,如下所示:

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

任何帮助将不胜感激

最佳答案

在您的网格中使用 ScrollViewer.CanContentScroll="True":

<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"/>
        ...

关于c# - ScrollViewer 不适用于 wpf 中的网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20444123/

相关文章:

c# - 使用 Odata 服务并获取 JSON 格式的结果

c# - 使 Visual Studio 设计器忽略公共(public)属性

c# - HTTPWebResponse + StreamReader 非常慢

c# - 禁用文本框样式中的文本选择

c# - 更改 DataGrid 列标题文本

c# - WPF 窗口中的图像在通过反射启动时抛出异常

c# - wpf TimeSpanUpDown 首先增加秒数

c# - numpy array[0, :] *= 1. 23 的 MathNet 等价物是什么

c# - 序列化/反序列化不同的属性名称?

c# - 无法访问 ControlTemplate 中 TextBlock 的 Text 属性