WPF-将滚动查看器添加到带有代码隐藏的面板

丹尼斯

由于某些原因,我需要使用codebehind将元素添加到表单中。

有一个主面板。通过单击按钮-我向其中添加一些内容,如下所示:

    private void AddCodeKlantFieldButtonOnClick(object sender, RoutedEventArgs routedEventArgs)
    {
        var button = sender as Button;
        if (button != null)
        {
            var panel = (StackPanel)button.Tag;
            var stackPanel = new StackPanel { Orientation = Orientation.Horizontal };
            AddLabel(stackPanel, "Klant van:", 135);
            opzoekenLandVan = new OpzoekenCode(OpzoekenCodeTable.Klant, "");
            opzoekenLandTot = new OpzoekenCode(OpzoekenCodeTable.Klant, "");
            stackPanel.Children.Add(opzoekenLandVan);
            AddLabel(stackPanel, "tot en met:", 100);
            stackPanel.Children.Add(opzoekenLandTot);
            var count = panel.Children.Count;                
            panel.Children.Insert(8, stackPanel);
        }
    }

很好!但是,如果我添加了太多项目,则表单上没有足够的空间-因此将需要使用scrollviewer。我很新,无法弄清楚如何处理它。我尝试了这个:

        var scrollViewer = new ScrollViewer();
        scrollViewer.Content = panel;
        scrollViewer.Visibility = Visibility.Visible;
        scrollViewer.VerticalScrollBarVisibility = ScrollBarVisibility.Visible;
        scrollViewer.CanContentScroll = true;

但是不会出现滚动条。如果我尝试将其添加到表单

panel.Children.Add(scrollViewer);

我收到一个错误:

PresentationFramework.dll中发生类型为'System.InvalidOperationException'的异常,但未在用户代码中处理

附加信息:遍历树时超出了逻辑树的深度。这可能表示树中有一个循环。

用户名

在下面的代码中,您没有将scrollViewer添加到可视树中,因此它没有显示

    var scrollViewer = new ScrollViewer();
    scrollViewer.Content = panel;  //this does not add to visualtree
    scrollViewer.Visibility = Visibility.Visible;
    scrollViewer.VerticalScrollBarVisibility = ScrollBarVisibility.Visible;
    scrollViewer.CanContentScroll = true;

上面的一行之一是

scrollViewer.Content = panel;

因此,尝试将其添加到面板的子级时会收到错误消息。

panel.Children.Add(scrollViewer);

您看到循环问题了吗?第一行,您将面板放置在scrollViewer内,下一行,您将相同的scrollViewer放置在面板中。

尝试注释掉scrollViewer.Content = panel,但将panel.Children.Add(scrollViwer)留在其中,这会将scrollViewer添加到视觉树。但是由于宽度或高度为0,它可能不可见,因为它没有内容并且位于堆栈面板中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在WPF中使用带有滚动面板的滚动查看器

来自分类Dev

将PDF查看器添加到WPF应用程序

来自分类Dev

将PDF查看器添加到WPF应用程序

来自分类Dev

滚动查看器左右的WPF按钮

来自分类Dev

WPF滚动查看器禁用滚动条

来自分类Dev

将垂直滚动条添加到WPF网格

来自分类Dev

WPF 滚动查看器不起作用

来自分类Dev

在 WPF 中使用滚动查看器缩放图像

来自分类Dev

WPF中的报表查看器?

来自分类Dev

WPF字体网格查看器

来自分类Dev

如何将Windows窗体面板添加到Wpf TabControl

来自分类Dev

如何将Windows窗体面板添加到Wpf TabControl

来自分类Dev

如何将滚动条添加到富文本框 wpf

来自分类Dev

在C#代码WPF中将TextBlock添加到标签

来自分类Dev

在C#代码WPF中将TextBlock添加到标签

来自分类Dev

WPF MVVM将带有两个控件的行动态添加到Grid / DataGrid

来自分类Dev

表单编辑器自动将子控件添加到WPF Integration ElementHost

来自分类Dev

将Multibinding转换器以及内容添加到按钮wpf

来自分类Dev

将主屏幕按钮添加到您的WPF浏览器

来自分类Dev

WPF将实际行添加到FlowDocument

来自分类Dev

将WPF Geometry从资源添加到GeometryGroup

来自分类Dev

如何将多个控件添加到WPF窗口?

来自分类Dev

将描述性MenuItem添加到WPF ContextMenu

来自分类Dev

将WPF添加到某些文件类型的右键菜单

来自分类Dev

将CheckBox和ProgressBar添加到WPF listView

来自分类Dev

将项目动态添加到 WPF 列表框

来自分类Dev

使用 ICollectionView 将项目添加到 ObsercableCollection 以过滤 WPF

来自分类Dev

WPF 根据属性将文本添加到 TextBlock

来自分类Dev

将项目动态添加到网格 WPF