动态生成的组合框值
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>
是否可以动态生成(例如,从数据库获取)嵌入 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>