【问题标题】:WPF VS Collection editor tutorial?WPF VS 集合编辑器教程?
【发布时间】:2013-03-01 02:54:27
【问题描述】:

我有一个带有 Collection 属性的用户控件。我想要实现的是能够通过 VS 设计器(属性窗口/集合编辑器)添加/修改/删除该集合的某些数据类型的项目。

我有一个简单的课程:

public class Quantity
{
    public string Name { get; set; }
    public Type DataType { get; set; }
}

在我的 UserControl 我有:

private ObservableCollection<Quantity> _quantities = new ObservableCollection<Quantity>();
public ObservableCollection<Quantity> Quantities
{
    get { return _quantities; }
}

问题是我可以通过 VS Collection 编辑器更改 Name 属性,但我无法通过这种方式更改 DataType 属性。

那么我必须做些什么才能让它发挥作用呢?

【问题讨论】:

    标签: c# wpf visual-studio user-controls


    【解决方案1】:

    我不相信这可以通过属性编辑器来实现。但是,您可以在 XAML 中生成结果。使用您的示例如下所示:

    <my:UserControl1>
        <my:UserControl1.Quantites>
            <my:Quantity Name="Hello World" DataType="{x:Type sys:Boolean}"/>
            <my:Quantity Name="This is a double" DataType="{x:Type sys:Double}"/>
        </my:UserControl1.Quantites>
    </my:UserControl1>
    

    如果您需要访问系统类型(就像我在示例中使用的那样),您可以包含以下 xmlns:

    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    

    希望对你有帮助:)

    【讨论】:

    • 作为一项建议,我强烈建议您尽可能多地在属性编辑器上使用 XAML。一旦你习惯了用 XAML 编写东西,属性编辑器对你来说将变得毫无用处。
    • 感谢您的回答,是的,这是一种可能性,但不幸的是,我必须以某种方式通过属性窗口使其工作。我有这个想法,将我的 DataType 属性的数据类型更改为字符串(并更改设置器,使其仅接受一种类型的字符串),然后拥有另一个属性,例如“{get { return GetType(DataType); } } " 但是我很不喜欢这种解决方案,但也许没有更简单的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多