如何在Compact Framework c#中迭代BindingSource项?

时间:2013-04-26 06:25:56

标签: c# binding compact-framework

我希望有一个大师可以帮助我解决这个问题。

我正在为windows ce移动设备创建自定义控件。我创建了一个属性,以便用户可以将任何源绑定到我的控件。我需要迭代源并获取显示成员路径的项值。

我声明我的源,然后创建属性。在构造中,如果源更改,我会注册一个事件,以便我可以再次开始绘制我的对象。这是我第一次从这个角度使用绑定源。我错过了什么或使用错了吗?这是一些代码片段

private BindingSource _bindingCollection;

public object DataSource
        {
            set { _bindingCollection.DataSource = value; }
        }
public string DisplayMemberPath { get; set; }

ctor()
{
_bindingCollection.DataSourceChanged += _bindingCollection_DataSourceChanged;
}


void _bindingCollection_DataSourceChanged(object sender, EventArgs e)

        {
            foreach (var item in _bindingCollection)
            {
                //I am stuck here on getting the value from the item that is
                // specified by DisplayMemberPath to paint my objects on the control
                //I can only paint on the control and cannot add any controls to it.
                //So here a method is called with the value as a parameter and the 
                //Graphics object will draw the string
            }
        }

先谢谢。

此致 里安

编辑:

老兄,我知道你用油漆方法画画,这是我想做的一个例子。我从头开始创建所有内容,整个控件都是从代码中提取的,我覆盖了所有需要的事件。也许在DisplayMemberPath中设置_bindingCollection.DataMember?那么在迭代源时会给出项目吗?现在测试并发布答案是否有效。请不要再发表评论或回答告诉我在油漆或类似的东西上使用。专注于从集合中获取显示成员值的问题:)

编辑:找到答案 对不起,这实际上是一个非常愚蠢的问题,我在忙着做很多事情的时候问过。这实际上很容易获得房产价值。

        for (int index = 0; index < _bindingCollection.Count; index++)
        {
            var propertyValue = _bindingCollection[index].GetType().GetProperty(DisplayMemberPath ).GetValue(_bindingCollection[index], null);
            // Can do anthing now with the value here or just create a 
            //method of returning this value with this line of code on top.

        }

如果有人需要删除该问题,可以删除该问题。如果还有其他人匆忙寻求这个解决方案并且不知道如何获得它,我会留在这里。这些只是代码片段,而不是可以使用的任何方法。

1 个答案:

答案 0 :(得分:1)

我只是将问题标记为已回答。阅读我的编辑,看看我的愚蠢思维错误以及为什么这很容易。

我会留下那些可能去和我一样思考并且不必要地挣扎的人,除非有人觉得必须删除这个问题你可以直接前进。