Xamarin我需要动态创建一些控件

时间:2017-10-02 18:41:43

标签: c# xamarin mvvm

我的数据库中有一些控件,当应用程序从数据库中调用ID时,我会在布局中收到一些控件和位置。

我需要把它放在AbsoluteLayout中,这些控件是Labels,BarGraphs和其他像这样的控件,但我不知道如何从我的ViewModel中实例化这些控件。

我有绝对布局,我正在创建ContentViews列表,但是如何绑定此列表,或在AbsoluteLayout中实例化?

更新

我制作了一个像这样的可绑定对象:

 class BindableContentView : AbsoluteLayout
{
    public static readonly BindableProperty ItemsProperty =
        BindableProperty.Create(nameof(Items), typeof(ObservableCollection<ContentView>), typeof(BindableContentView), null,
            propertyChanged: (b, o, n) =>
            {
                (n as ObservableCollection<ContentView>).CollectionChanged += (coll, arg) =>
                {
                    switch (arg.Action)
                    {
                        case NotifyCollectionChangedAction.Add:
                            foreach (var v in arg.NewItems)
                                (b as BindableContentView).Children.Add((ContentView)v);
                            break;
                        case NotifyCollectionChangedAction.Remove:
                            foreach (var v in arg.NewItems)
                                (b as BindableContentView).Children.Remove((ContentView)v);
                            break;                            
                    }
                };
            });

    public ObservableCollection<ContentView> Items
    {
        get { return (ObservableCollection<ContentView>)GetValue(ItemsProperty); }
        set { SetValue(ItemsProperty, value); }
    }

    public BindableContentView()            
    { }
}

在XAML中我使用了这段代码:

  <AbsoluteLayout x:Name="absLayout">
     <objectlocal:BindableContentView Items="{Binding DynamicObjects, Mode=TwoWay}"/>
  </AbsoluteLayout>

但它不起作用。

0 个答案:

没有答案