当前位置:  开发笔记 > 编程语言 > 正文

WPF - HeaderStringFormat在Expander中不起作用

如何解决《WPF-HeaderStringFormat在Expander中不起作用》经验,为你挑选了1个好方法。

我似乎找不到神奇的组合来使HeaderStringFormat适用于WPF Expander.

以下是我尝试过的所有事情:


    


    


    

我可以在我的代码中使格式化字符串正常工作的唯一方法是:


    
        
    
    
        A Expander with working header
    

我究竟做错了什么?



1> Micah..:

首先要注意的是:

如果设置HeaderedContentControl的HeaderTemplate或HeaderTemplateSelector属性,则忽略HeaderStringFormat属性. MSDN

在WPF中有很多类似的问题需要注意.您没有在您的示例中显示,但请记住它.但是,我不认为这是你的问题.

需要注意的第二点是,这与以下内容不同:

String.Format("My string value is: {0}", myValue");

HeaderedContentControl和HeaderStringFormat专门用于实现IFormattable的类.HederStringFormat格式化标题,ContentStringFormat格式化内容.如果IFormattable.ToString,则任一属性的值是传递给类实现的格式.您可以阅读MSDN上的完整示例.但这是如何使其发挥作用的要点.

public class MyTestClass : IFormattable
{
    #region IFormattable Members
    public string ToString(string format, IFormatProvider formatProvider)
    {
        if(format == "n")
        {
            return "This is my formatted string";
        }
        else
        {
            return "this is my non-formatted string";
        }
    }
    #endregion
}

    


    
        
    

此TabItem现在将在标题中显示"这是我的格式化字符串",内容将是"这是我的非格式化字符串".

有几件事需要记住.通常,这些属性仅在HeaderedItemsControl上下文中使用.HeaderStringFormat不会以这种方式绑定,而是具有HeaderedItemsControl的ItemContainer提供的默认绑定.例如,如果您设置TabItem的ItemsSource属性,那么它将自动为您添加标题和内容绑定,您所要做的就是提供所需的格式值.

最后,但并非最不重要的是,我能够使用GroupBox和TabItem使一切正常工作,但使用扩展器并没有太多运气,我不知道为什么.扩展器正确处理ContentStringFormat,但不处理HeaderContentStringFormat.考虑到两者都继承自HeaderContentControl,这令人惊讶.

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