当前位置:  开发笔记 > 运维 > 正文

让WPF Tabcontrol高度假设最大项目的高度?

如何解决《让WPFTabcontrol高度假设最大项目的高度?》经验,为你挑选了3个好方法。

有没有办法让tabcontrol采取最大标签项的大小(实际上,tabitem的内容)?

由于tabcontrol没有指定特定的大小,因此它应该自动调整大小:它可以正确地执行此操作,但是当您切换选项卡时,它会自动将其自身调整为当前所选选项卡内容的高度(和宽度).

我不希望调整大小发生,让tabcontrol假设最大项目的高度,但仍然让它自动调整大小.

有线索吗?我尝试数据绑定到Height使用多绑定作为内容的每个元素ActualHeightItems属性,并对Tabcontrol 的属性和属性进行绑定.但是,唉,ActualHeight内容元素总是0.

         
            
                
                    
                        
                        
                    
                

            ...

可以这样做吗?



1> 小智..:

是的,可以这样做:reuse-grid-rowdefinitions-for-each-tabitem

例:

    
        
            
                
                    
                
            
        
        
            
                
                    
                
            
        
   


关键是要包括`Grid.IsSharedSizeScope ="True",我第一次错过了 - 没有它对我来说没有任何改变.另请注意,您不必在网格中使用"TabControl"来应用该值.

2> Kent Boogaar..:

问题是在TabControl切换选项卡时卸载并重新加载其内容.因此,它只知道当前活动选项卡中内容的大小.您应该能够更改TabControl,使其永远不会破坏其子项,并且它们始终存在(但可能隐藏).

Eric Burke的这篇博文应该可以帮到你.通过略读他的帖子,我可以告诉你,你需要改变它:

所有孩子在装载时都会TabControl被加载.

孩子们在不活动时会被隐藏而不是崩溃


断链.:(

3> Inferis..:

实际上,我认为这更容易解决.因为TabControl无论如何我有一个控制模板,我设置了ContentPresenter呈现所选标签内容的高度.我这样做是使用一个绑定到项目的转换器,TabControl必要时测量它们(使用Measure)并检查DesiredSize我需要的大小.

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var items = value as ItemCollection;

        if (items == null)
            return null;

        double max = 0;
        foreach (TabItem item in items)
        {
            var content = item.Content as FrameworkElement;
            if (content == null) continue;

            if (!content.IsMeasureValid)
                content.Measure(new Size(int.MaxValue, int.MaxValue));

            var height = content.DesiredSize.Height;
            if (max < height)
                max = height;
        }

        return max;
    }

这很好,有一些警告:

每个标签内容应该是一个 FrameworkElement

加载后内容不会改变大小(因为仅在Items属性更改时调用转换器,即只调用一次).

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有