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