首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xceed属性网格不显示DisplayName

Xceed属性网格不显示DisplayName
EN

Stack Overflow用户
提问于 2015-08-17 22:40:32
回答 1查看 1.2K关注 0票数 0

我在我的项目中使用了Xceed property using,由于某种原因,当我打开属性的下拉列表时,它显示的是"Xceed.Wpf.Toolkit.PropertyGrid.Attributes.Item“而不是我插入的项。我敢肯定是因为调用了toString()方法,我就是不明白为什么..我看到了这个问题,WPF Xceed PropertyGrid showing "Xceed.Wpf.Toolkit.PropertyGrid.Attributes.Item" instead of the real DisplayName,这正是我的问题,但他似乎没有得到解决方案。我已经尝试了很多次解决方案,但都不起作用。有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2015-08-18 08:10:59

您可以重写ToString方法来显示您想要的任何属性,例如,假设我们有以下类作为propertyGrid控件的SelectedObject

代码语言:javascript
复制
public class Company
{
    [Category("Main")]
    [DisplayName("Name")]
    [Description("Property description")]
    public String Name { get; set; }
    [Category("Main")]
    [DisplayName("Type")]
    [Description("Property description")]
    public String Type { get; set; }
    [Category("Main")]
    [DisplayName("Something")]
    [Description("Property description")]
    public bool Something { get; set; }
    [Category("Main")]
    [DisplayName("Director")]
    [Description("Property description")]
    [ItemsSource(typeof(EmployeList))]
    public Employe Director { get; set; }
}

集合应按如下方式定义

代码语言:javascript
复制
 public class EmployeList : IItemsSource
{
    public Xceed.Wpf.Toolkit.PropertyGrid.Attributes.ItemCollection GetValues()
    {
        Xceed.Wpf.Toolkit.PropertyGrid.Attributes.ItemCollection employe = new Xceed.Wpf.Toolkit.PropertyGrid.Attributes.ItemCollection();
        employe.Add(new Employe()
        {
            Name = "Name1",
            Rank = "Rank1",
            Age=40,
        }); employe.Add(new Employe()
        {
            Name = "Name2",
            Rank = "Rank2",
            Age=40,
        }); employe.Add(new Employe()
        {
            Name = "Name3",
            Rank = "Rank3",
            Age=40,
        });
        return employe;
    }
}

并且Employe类应该覆盖Tostring方法

代码语言:javascript
复制
  public class Employe
{        
    public String Name { get; set; }
    public String Rank { get; set; }
    public int Age { get; set; }
    public override string ToString()
    {
        return Name;
    }
}

xaml

代码语言:javascript
复制
<xctk:PropertyGrid  Name="pg"  SelectedObject="{Binding SelectedCompany}" AutoGenerateProperties="True" >                
    </xctk:PropertyGrid>

结果就是你想要的结果

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32053226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档