0

プロジェクトで Xceed propertygrid を使用していますが、何らかの理由でプロパティのドロップダウンを開くと、挿入したアイテムの代わりに「Xceed.Wpf.Toolkit.PropertyGrid.Attributes.Item」が表示されます。メソッドが呼び出されたためだと確信していますが、toString()理由がわかりません..この質問を見た WPF Xceed PropertyGrid は、実際の DisplayName の代わりに "Xceed.Wpf.Toolkit.PropertyGrid.Attributes.Item" を表示しています。 これはまさに私の問題ですが、彼が解決策を得たようには見えません。私は解決策を何度も試しましたが、うまくいきませんでした。助言がありますか?

4

1 に答える 1

2

メソッドをオーバーライドして、ToString必要なプロパティを表示できます。たとえば、コントロールの として次のクラスがあるSelectedObjectとします。propertyGrid

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; }
}

コレクションは次のように定義する必要があります

 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

  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

<xctk:PropertyGrid  Name="pg"  SelectedObject="{Binding SelectedCompany}" AutoGenerateProperties="True" >                
    </xctk:PropertyGrid>

結果はあなたが探しているものです

出力

于 2015-08-18T00:10:58.820 に答える