动态生成的组合框值

Combobox values generated dynamically

是否可以动态生成(例如,从数据库获取)嵌入 WPF 工具包的组合框项 PropertyGrid?我找到了以下代码,但它生成固定值。

public class Person
{
    [ItemsSource(typeof(FontSizeItemsSource))]
    public double WritingFontSize { get; set; }
}

public class FontSizeItemsSource : IItemsSource
{
    public ItemCollection GetValues()
    {
        ItemCollection sizes = new ItemCollection();
        sizes.Add(5.0, "Five");
        sizes.Add(5.5);
        return sizes;
    }
}

您可以设置自己的编辑模板,并通过绑定到 ItemsSource 向其中的 ComboBox 提供项目:

public class Person
{
    public double WritingFontSize { get; set; }

    public ObservableCollection<double> FontSizeItemsSource
    {
        get
        {
            ObservableCollection<double> sizes = new ObservableCollection<double>();

            // Items generation could be made here
            sizes.Add(5.0);
            sizes.Add(5.5);
            return sizes;
        }

    }
}


    <xctkpg:PropertyGrid SelectedObject="{Binding MyPersonObject}" AutoGenerateProperties="False">
        <xctkpg:PropertyGrid.EditorDefinitions>
            <xctkpg:EditorTemplateDefinition TargetProperties="WritingFontSize">
                <xctkpg:EditorTemplateDefinition.EditingTemplate>
                    <DataTemplate>
                        <ComboBox ItemsSource="{Binding Instance.FontSizeItemsSource}" SelectedValue="{Binding Instance.WritingFontSize}" />
                    </DataTemplate>
                </xctkpg:EditorTemplateDefinition.EditingTemplate>
            </xctkpg:EditorTemplateDefinition>
        </xctkpg:PropertyGrid.EditorDefinitions>

        <xctkpg:PropertyGrid.PropertyDefinitions>
            <xctkpg:PropertyDefinition TargetProperties="WritingFontSize" />
        </xctkpg:PropertyGrid.PropertyDefinitions>
    </xctkpg:PropertyGrid>