【问题标题】:Extended WPF Toolkit not showing String Collection in collection editor扩展的 WPF 工具包未在集合编辑器中显示字符串集合
【发布时间】:2014-08-13 22:46:45
【问题描述】:

我正在为他们的属性编辑器使用扩展的 WPF 工具包。 http://wpftoolkit.codeplex.com/wikipage?title=PropertyGrid

我的设置文件中定义了一些 StringCollection 对象,它们显示为 System.Collections.Specialized.StringCollection 而不是 CollectionEditor。

这是我定义属性编辑器的方式:

<xctk:PropertyGrid x:Name="SettingsGrid" SelectedObject="{Binding Source={x:Static properties:Settings.Default}}" IsCategorized="False">
</xctk:PropertyGrid>

是否需要额外设置?

【问题讨论】:

  • 您可能需要为其定义一个TypeConverter,或者手动将属性添加到PropertyGrid,而不是自动生成。

标签: c# wpf


【解决方案1】:

这里是在PropertyGrid 中为System.Collections.Specialized.StringCollection 指定自定义编辑器的示例

<xctk:PropertyGrid x:Name="SettingsGrid"
                   SelectedObject="{Binding Source={x:Static properties:Settings.Default}}"
                   IsCategorized="False"
                   xmlns:sp="clr-namespace:System.Collections.Specialized;assembly=System">
    <xctk:PropertyGrid.EditorDefinitions>
        <xctk:EditorTemplateDefinition TargetProperties="{x:Type sp:StringCollection}">
            <xctk:EditorTemplateDefinition.EditingTemplate>
                <DataTemplate>
                    <Expander Header="(StringCollection)">
                        <ListBox ItemsSource="{Binding Value}"
                                 HorizontalContentAlignment="Stretch">
                            <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <TextBox Text="{Binding Path=.}" />
                                </DataTemplate>
                            </ListBox.ItemTemplate>
                        </ListBox>
                    </Expander>
                </DataTemplate>
            </xctk:EditorTemplateDefinition.EditingTemplate>
        </xctk:EditorTemplateDefinition>
    </xctk:PropertyGrid.EditorDefinitions>
</xctk:PropertyGrid>

在指定编辑器之前

指定编辑器后

此示例可能无法准确展示您希望如何编辑集合,您可以根据需要调整模板

【讨论】:

  • 所以 XAML 编辑器说你不能分配 TargetProperties="{x:Type sp:StringCollection}" 因为它不认为 StringCollection 是 IList,即使它是。但它仍然可以编译并运行良好,我可以看到字符串集合编辑器。是否可以在编辑时从编辑器中添加/删除行,或者您只能编辑现有值。
  • 首先你可以放心地忽略编译器的警告。其次,要以所有可能的方式操作集合,例如添加删除等,您可能会创建一个用户控件并完全控制操作,或者甚至一些 mvvm 可以在这里为您提供帮助。绑定中的“值”指的是字符串集合。快乐编码:-)
猜你喜欢
  • 2016-07-17
  • 1970-01-01
  • 2023-03-18
  • 2015-05-19
  • 1970-01-01
  • 2011-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多