Xamarin DataBinding到bindableProperty(CustomView)

时间:2017-03-21 13:28:12

标签: c# xaml xamarin xamarin.forms

我制作了一个显示文字的自定义视图。

TestView.xaml中的

<?xml version="1.0" encoding="UTF-8"?>
<ContentView 
    xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="EodiRoad.TestView">
    <StackLayout>

        <Label Text="{Binding Test}"/>
        <Label Text="this is test view"/>

    </StackLayout>
</ContentView>

和代码隐藏

TestView.xaml.cs中的

    public partial class TestView : ContentView
    {


        public static BindableProperty TestProperty =
            BindableProperty.Create(
                propertyName: "Test",
                returnType: typeof(string),
                declaringType: typeof(TestView),
                defaultValue:"???"
            );

        public string Test
        {
            get
            { return (string)GetValue(TestProperty); }
            set
            {
                Debug.WriteLine("test setted value = " + (string)value);
                SetValue(TestProperty, value); 
            }
        }



        public TestView()
        {
            InitializeComponent();
            BindingContext = this;
        }
    }

当我使用它时,这是其他一些页面

<local:TestView Test="hjhkhjk"/>

它会工作得很好。但是当我将数据绑定到它时

<local:TestView Test="{Binding post.uploader.username}"/>

然后它不会显示任何东西......

这不是post.uploader.username值错误或某种事情的问题。因为

<Label Text="{Binding post.uploader.username}"/>

我在这个故障线下有这个代码,它也可以正常工作..

我在这里做错了什么? 如何修复它??

1 个答案:

答案 0 :(得分:0)

您只能从TestView类中的feedBackStatusFromCsvFiles属性对象进行绑定。例如,如果您要编写下一个代码:

BindableObject

您的<local:TestView Test="{Binding post.uploader.username}" /> 对象必须具有BindableObject属性对象,该对象具有post属性对象,其具有uploader属性字符串