Я использую свойство Xceed в моем проекте, и по какой-то причине, когда я открываю раскрывающийся список свойства, он показывает «Xceed.Wpf.Toolkit.PropertyGrid.Attributes.Item» вместо элементов я вставлен. Я уверен, что потому, что вызван метод toString()
, я просто не могу понять, почему .. Я видел этот вопрос WPF Xceed PropertyGrid showing "Xceed.Wpf.Toolkit.PropertyGrid.Attributes.Item" instead of the real DisplayName , это как раз моя проблема, но, похоже, он не получил решение. Я пробовал много попыток решения, но не работал. Любые предложения?Xceed propertygrid не отображается DisplayName
0
A
ответ
1
Вы можете переопределить метод 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>
и результат того, что вы ищете
Спасибо за ваш ответ. Я уже пробовал это решение, проблема в том, что после ввода в ItemCollection новый класс Item строится и вводится в коллекцию. Таким образом, вызываемая функция ToString по-прежнему является элементом Item. – petric