xamarin形成自定义控件

时间:2017-01-23 22:03:35

标签: xamarin xamarin.forms

我有一个自定义控件,基本上是一个可以绑定连接字符串的stacklayout,并将它分解为多个对象,如标记列表。

public void Render()
        {
            if (ItemsSource == null)
                return;

            this.Orientation = Orientation == StackOrientation.Vertical ? StackOrientation.Vertical : StackOrientation.Horizontal;
            this.Margin = new Thickness (0, 0, 0, 0);

            List<string> items = ItemsSource.Split('|').ToList();
            foreach (var item in items)
            {
                var frame = new Frame();
                frame.BindingContext = item;
                frame.BackgroundColor = Color.FromHex("#FCFACF");
                frame.OutlineColor = Color.FromHex("#D0C0AD");
                frame.HasShadow = false;
                frame.Padding = new Thickness(4, 2, 4, 0);
                var label = new Label();
                label.Text = "{Binding}";
                label.FontSize = 10;
                label.Parent = frame;
                Children.Add(frame);
            }
        }

但我似乎无法做到这一点,如何添加一个标签作为一个框架的孩子,如何修复我的绑定,如目前我添加标签给孩子们stacklayout标签的文本是{binding}而不是实际文本。

有人可以帮我解决这个问题。如果我在XAML中添加了带有datatemplate和viewcell的ItemTemplate,我就完成了所有这些工作,但我不想在XAML中完成这项工作,因为我想在其他视图中重用所有这些。

1 个答案:

答案 0 :(得分:0)

框架具有内容属性

Frame.Content = label;

要在代码中指定绑定,请使用

label.SetBinding(Label.TextProperty, new Binding("."));