WPF Xceed PropertyGrid显示“Xceed.Wpf.Toolkit.PropertyGrid.Attributes.Item”而不是真正的DisplayName

时间:2015-03-03 16:33:39

标签: c# wpf caliburn.micro propertygrid xceed

我尝试使用Xceed PropertyGrid显示带有硬编码字符串值的下拉列表。 PropertyGrid显示:" Xceed.Wpf.Toolkit.PropertyGrid.Attributes.Item"而不是将项目显示为我指定为IItemSource的字符串。对于下拉列表中的每个项目。 当我选择一个对象时,所需的字符串显示为所选项目。

这是我看到的下拉项目:

enter image description here

当我选择一个项目时,我可以按照我希望它作为下拉项目的方式看到它:

enter image description here

我的代码:

XAML:

<xctk:PropertyGrid SelectedObject="{Binding MySettingsWrapper}" AutoGenerateProperties="True">
</xctk:PropertyGrid>

C#:

[Serializable]
public class SettingsWrapper
{
    [LocalizedCategory("SettingsViewCategoryHardware")]
    [LocalizedDisplayName("SettingsViewLblSelectPrinter")]
    [ItemsSource(typeof(PrintersItemSource))]
    public string SelectedPrinter { get; set; }

    public class PrintersItemSource : IItemsSource
    {
        public ItemCollection GetValues()
        {
            var printers = new ItemCollection();
            for (int i = 0; i < 7; i++)
            {
                printers.Add("Option - " + i);
            }

            return printers;
        }
    }
}

我正在使用Caliburn.Micro,BTW。

我尝试过几件事情,但我没有想法。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

这应该有效:

public ItemCollection GetValues()
{
    var printers = new ItemCollection();
    for (int i = 0; i < 7; i++)
    {
        string entry = "Option - " + i;
        printers.Add(entry, entry);
    }

    return printers;
}