WPF ScrollViewer 无法在以编程方式填充的网格中工作

WPF ScrollViewer not working in Grid programmatically populated

我在xaml

遇到过这种情况
<StackPanel Orientation="Vertical" Margin="5" Background="AliceBlue" Height="370">
    <ScrollViewer VerticalScrollBarVisibility="Auto">
        <Grid Name="DescriptionsGrid" MinHeight="0" MaxHeight="370" ScrollViewer.CanContentScroll="True"></Grid>
    </ScrollViewer>
</StackPanel>

我用以下内容填充网格

DescriptionsGrid.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto });
TextBlock textBlock = new TextBlock { Text = description, TextWrapping = TextWrapping.WrapWithOverflow };
Label label = new Label { Content = textBlock, Foreground = new SolidColorBrush(Colors.Blue) };
label.MouseLeftButtonDown += new MouseButtonEventHandler(LoadXML);
DescriptionsGrid.Children.Add(label);
Grid.SetRow(DescriptionsGrid.Children[DescriptionsGrid.Children.Count - 1], description_counter);
description_counter++;

我无法定义行高,因为说明可能足够长,无法将文本换行。

滚动条不出现,新元素隐藏在下方。

有什么想法吗?

按照@Clemens的建议重写了代码,发现错误在XML.

填充网格

        foreach (HostMessages hostMessage in hostMessagesList)
        {
            Label message = new Label
            {
                Content = new TextBlock {
                    Text = hostMessage.Description,
                    TextWrapping = TextWrapping.WrapWithOverflow
                },
                Foreground = new SolidColorBrush(Colors.Blue),
                Cursor = Cursors.Hand
            };
            message.MouseLeftButtonDown += new MouseButtonEventHandler(LoadXML);
            itemsControl.Items.Add(message);
        }

XML如下

<DockPanel Grid.Row="1" Margin="5" Background="AliceBlue" Height="370">
    <ScrollViewer VerticalScrollBarVisibility="Auto" Height="370">
        <ItemsControl Name="itemsControl"></ItemsControl>
    </ScrollViewer>
</DockPanel>

错误是将 MaxHeight="370" 分配给 Grid 并将 none 分配给 ScrollViewer