【问题标题】:How do I override ToString() for a Dictionary如何覆盖字典的 ToString()
【发布时间】:2011-01-02 17:00:44
【问题描述】:

我有一个 Dictionary<string, FieldDefinition> 依赖属性,当我将它绑定到 WPF 列表框时,我希望它只打印字符串(而不是 FieldDefinition)。

有没有办法做到这一点?

【问题讨论】:

    标签: c# .net wpf dictionary tostring


    【解决方案1】:

    在这里,我可能是错的,但我认为您正在查找字典中的 Keys 属性;这将返回 TKey 值的集合(在您的情况下,是字典的“字符串”部分,而不是 FieldDefinition 部分,顺便提一下,可以通过 Values 属性获得)

    <ListBox ItemsSource="{Binding MyDictionary.Keys}" />
    

    【讨论】:

      【解决方案2】:

      我会创建一个实现 IDictionary 的类

      public class CustomDictionary : IDictionary
      {
      ...
      }
      

      或继承字典

      public class CustomDictionary : Dictionary<string, FieldDefinition>
      {
      ...
      }
      

      并像这样覆盖此类中的ToString 方法:

      public override string ToString() 
        {
           return "My custom string";
        }
      

      【讨论】:

      • 这确实是覆盖 ToString 的正确方法,但不是 OP 所要求的。 IanR 在这方面走在了正确的轨道上。
      • 嗯,这是问题的 title 是什么,但不是 OP 试图完成的实际事情......
      【解决方案3】:

      从 Dictionary 派生一个类,覆盖 ToString()。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-20
        • 2012-08-10
        • 2011-03-24
        相关资源
        最近更新 更多