动态生成组合框值

时间:2016-02-02 20:12:01

标签: c# wpf combobox wpftoolkit propertygrid

是否可以动态生成(例如从数据库获取)嵌入在WPF Toolkit 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;
    }
}

1 个答案:

答案 0 :(得分:2)

您可以设置自己的编辑模板,并通过绑定到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>