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

如何设置WPF扩展器标头的样式?

如何解决《如何设置WPF扩展器标头的样式?》经验,为你挑选了3个好方法。

我想在WPF Expander Header上应用一种样式.在下面的XAML中,我有一个Expander,但它的风格不仅适用于标题.

谢谢.


    
        
            
        
        
            
                Bike
                Car
                Truck
            
        
    

Vasile Tomoi.. 53

我结合了Josh Smith和MSDN的一些XAML,并提出了一个解决方案.实际上,必须重新控制控制(至少是标题).


    
        

            

            
                
                    
                
            

            

        

        
            
                This is a textbox
                
            
        

    

我建议删除样式并直接在扩展器上使用'HeaderTemplate'属性.这样可以保留您的默认样式. (3认同)

我发现扩展器宽度是一个真正的问题,你的代码就是这样做的.它完美地在xamlpad中工作.但是在我的代码中它不会导致可怕的图形延迟.Width ="{Binding RelativeSource {RelativeSource Mode = FindAncestor,AncestorType = {x:Type Expander}},Path = ActualWidth}">通过添加上述内容,它可以工作,但是滞后.如果我删除它,或更改路径=宽度,它不起作用,滞后消失. (2认同)


PatrickV.. 15

我认为Vasile的答案是在正确的轨道上,但似乎它比原始海报所需要的要多得多.所有原始问题都要求改变标题的背景.虽然所提出的变化确实如此,但它也做了其他事情.

其中一个是用TextBlock替换默认实现,我相信ContentPresenter.那么稍后我们在这个堆叠面板上添加第二个扩展器会发生什么呢?也许是这样的:


    
        
            
            Ha!
        
    

我不知道,但这并不好.相反,我认为我们希望保持这一点.


    



这样,当有人在我们的样式扩展器中放入不仅仅是文本的东西时,我们就不会破坏.如果你想确保用这个背景包装他们所做的全部内容,这可能是期望的,那将是:


    
        
    


Dominic Hopt.. 6

取决于你想要的风格 - 你可以设计它的任何部分.如果要更改标题中的内容,只需将所有UI放在Expander.Header属性中,它将显示在标题区域中.

如果这不符合您的需求,您可能需要重新模板控件.在这里查看 WPF中提供的控件模板



1> Vasile Tomoi..:

我结合了Josh Smith和MSDN的一些XAML,并提出了一个解决方案.实际上,必须重新控制控制(至少是标题).


    
        

            

            
                
                    
                
            

            

        

        
            
                This is a textbox
                
            
        

    


我建议删除样式并直接在扩展器上使用'HeaderTemplate'属性.这样可以保留您的默认样式.
我发现扩展器宽度是一个真正的问题,你的代码就是这样做的.它完美地在xamlpad中工作.但是在我的代码中它不会导致可怕的图形延迟.Width ="{Binding RelativeSource {RelativeSource Mode = FindAncestor,AncestorType = {x:Type Expander}},Path = ActualWidth}">通过添加上述内容,它可以工作,但是滞后.如果我删除它,或更改路径=宽度,它不起作用,滞后消失.

2> PatrickV..:

我认为Vasile的答案是在正确的轨道上,但似乎它比原始海报所需要的要多得多.所有原始问题都要求改变标题的背景.虽然所提出的变化确实如此,但它也做了其他事情.

其中一个是用TextBlock替换默认实现,我相信ContentPresenter.那么稍后我们在这个堆叠面板上添加第二个扩展器会发生什么呢?也许是这样的:


    
        
            
            Ha!
        
    

我不知道,但这并不好.相反,我认为我们希望保持这一点.


    



这样,当有人在我们的样式扩展器中放入不仅仅是文本的东西时,我们就不会破坏.如果你想确保用这个背景包装他们所做的全部内容,这可能是期望的,那将是:


    
        
    



3> Dominic Hopt..:

取决于你想要的风格 - 你可以设计它的任何部分.如果要更改标题中的内容,只需将所有UI放在Expander.Header属性中,它将显示在标题区域中.

如果这不符合您的需求,您可能需要重新模板控件.在这里查看 WPF中提供的控件模板

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