1

我有一组要绑定到 RadGridView 的对象(来自工具包 telerik)。对象的类看起来像这样(需要理解的最少代码),其中我有 1 个属性和 1 个值数组:

public class AttributeEntry : INotifyPropertyChanged
    {
        public string Code { get; set; }
        private string[] _values;
        public string[] Values
        {
            get { return _values; }
            set { _values = value; }
        }
        public string this[int index]
        {
            get { return _values[index]; }
            set
            {
                _values[index] = value;
                if (PropertyChanged != null)
                    PropertyChanged(this, new PropertyChangedEventArgs(Binding.IndexerName));
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
    }

有人知道一种(简单的)方法,使用模式 MVVM,有一个 RadGridView 定义了一些列(在我的情况下对应于“代码”属性)和一些列“自动生成”,每列对应于集合的元素(在我的情况下,数组“值”的元素。如果我的集合中有 7 个值,我应该有 7 个“自动生成”列)?

4

3 回答 3

1

对于任何试图实现这一点的人,请将您的类声明为 expandoobject,这是一个具有实现 INotifyPropertyChanged 的​​灵活类结构,您可以根据代码中的要求定义属性。

在 Telerik raddatagrid 上,将 itemsource 绑定到 expandoobjects 的集合,并将 AutoGenerateColumns 设置为 true。

如果要根据 expandoobject 的内容定制列,则使用 AutoGeneratingColumn 事件,该事件会为每个列生成触发,如果将列控件定义为数据模板,则可以在后面的代码中访问它们并将它们分配给单元格模板。

于 2012-07-16T08:25:37.550 回答
1

我假设您将您绑定RadGridView到一个AttributeEntry.

在这种情况下,ITypedList请在您的收藏中实施。您可以使用ITypedList返回 virtualPropertyDescriptorGetValueSetValue方法使用数组

于 2011-04-20T15:14:36.953 回答
0

不确定,RadGridView但对于正常情况DataGrid,您可以将AutoGenerateColumns属性设置true为根据其数据绑定自动生成列,或者false根据您的代码创建列。

在您的情况下,我认为您必须将AutoGenerateColumns属性设置为false并自己定义列以结合两者(集合的元素和 Code 属性)。

编辑:

刚刚检查了MSDN

显式声明的列字段可以与自动生成的列字段结合使用。当两者都使用时,首先呈现显式声明的列字段,然后是自动生成的列字段。

于 2011-04-20T15:11:56.687 回答