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