Xamarin.android 不带适配器的自定义控件。绑定列表

Xamarin.android 不带适配器的自定义控件。绑定列表,xamarin.android,mvvmcross,Xamarin.android,Mvvmcross,我为monodroid创建了一个自定义控件。由于我的控件绑定了IEnumerable,因此遵循教程和本教程。 我的控件继承到FrameLayout,然后我无法从父类访问适配器属性 当我分配List绑定属性并调用RaisePropertyChanged事件时。没有上升。我该怎么做 提前谢谢 编辑以显示代码 谈话是廉价的,我显示代码 这是自定义控件的标题和绑定列表 public class DrawingBoardControl : View { priva

我为monodroid创建了一个自定义控件。由于我的控件绑定了IEnumerable,因此遵循教程和本教程。 我的控件继承到FrameLayout,然后我无法从父类访问适配器属性

当我分配List绑定属性并调用RaisePropertyChanged事件时。没有上升。我该怎么做

提前谢谢

编辑以显示代码

谈话是廉价的,我显示代码

这是自定义控件的标题和绑定列表

    public class DrawingBoardControl : View
    {        

    private DrawingItems m_drawingItems;

    [MvxSetToNullAfterBinding]
    public DrawingItems CanvasItems
    {
        get
        {
            return m_drawingItems;
        }

        set
        {
            m_drawingItems = value;
            this.Update();
        }
    }
    ...
我使用一个名为“DrawingItems”的类,有

    public class DrawingItems : IEnumerable<IDrawingElement>
    {
    private List<IDrawingElement> myDrawingItems = new List<IDrawingElement>();

    public IEnumerator<IDrawingElement> GetEnumerator()
    {
        return myDrawingItems.GetEnumerator();
    }

    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
    {
        return this.GetEnumerator();
    }

    public void Add(IDrawingElement element)
    {
        myDrawingItems.Add(element);
    }
  }
公共类DrawingItems:IEnumerable
{
私有列表myDrawingItems=新列表();
公共IEnumerator GetEnumerator()
{
返回myDrawingItems.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
返回此.GetEnumerator();
}
公共无效添加(IDrawingElement)
{
myDrawingItems.Add(元素);
}
}
但是,在其他自定义控件中,我使用IEnumerable和generic列表,问题仍然存在

当我在ViewModel中使用RaisePropertyChanged时,Items属性不会提升


很抱歉昨天没有提供更多信息

对于未完成的问题,总会有一些答案:

如果无法访问父级的适配器,则父级必须设置子级的上下文。没有更多的选择了。通过公开完整的接口,使自定义控件完全可绑定。列表必须为列表项提供上下文

不知何故,绑定到IEnumerable的customcontrol感觉非常错误。一个用于显示列表项的自定义控件,我可以理解,但不适用于列表。但这当然是可以做到的。但是您最终会设置对容器类的引用,并设置每个项的datacontext或viewmodel

但如果你想让别人帮忙,请提供更多信息

更新: 然后我也更新了:)这提供了一些问题的线索:

不要分配新列表,而是从ObservaleCollection继承this,或者使用setter中的正确参数手动调用raiseProperty。我认为这是出于设计,分配一个新列表不会调用PropertyRaised


因为“应用程序为王”——规则:在这种情况下,我会通知酒店自己改变。这可能与弱引用问题有关(请参见ListItem属性上的属性)。

这个问题太难回答。它需要更多的信息。也许有些代码会有所帮助,例如绑定视图属性、绑定视图模型属性和绑定本身。一些调试跟踪可能也会有帮助——这可能会告诉你什么是错的,什么不是错的。我仍然不确定你说的“不升起”是什么意思。顺便说一句,此代码仅用于您的最后一个问题?我的第一个答案是关于你的第一个问题。。。