0

我创建了一个自定义 ContentPage 来显示一个带有首字母的圆形头像。当我通过绑定传递一个值时,它会显示为null,我进行了调试以检查这一点。有人能帮助我吗?谢谢。

主页.xaml

<views:CircleView CircleText="{Binding Initials}"/>

CircleView.xaml

<Frame x:Name="circleFrame">
    <Label  x:Name="circleLabel"
            Text="{Binding CircleText}"/>
</Frame>

CircleView.xaml.cs

public partial class CircleView : ContentView
{
    public CircleView()
    {
        InitializeComponent();
        BindingContext = this;
    }

    public static readonly BindableProperty CircleTextProperty =
BindableProperty.Create(nameof(CircleText), typeof(string), typeof(CircleView), null);

    public string CircleText
    {
        get { return (string)GetValue(CircleTextProperty); }
        set { SetValue(CircleTextProperty, value); }
    }
}
4

2 回答 2

1

你可以试试下面的代码。

CircleView.xaml:</p>

   <Frame x:Name="circleFrame">
        <Label  x:Name="circleLabel"/>
    </Frame>

CircleView.xaml.cs:

    public CircleView()
    {
        InitializeComponent();

    }

    public static readonly BindableProperty CircleTextProperty =
    BindableProperty.Create(nameof(CircleText), typeof(string), typeof(CircleView), propertyChanged:(b,o,n)=>(b as CircleView).OnChanged());

    private void OnChanged()
    {
        circleLabel.Text = CircleText;
    }

    public string CircleText
    {
        get { return (string)GetValue(CircleTextProperty); }
        set { SetValue(CircleTextProperty, value); }
    }

MainPage.xaml:

     <views:CircleView CircleText="{Binding Initials}"/>

MainPage.xaml.cs:

    public string Initials { get; set; }
    public MainPage()
    {
        InitializeComponent();
        Initials = "Hello";
        this.BindingContext = this;
    }
于 2021-09-30T07:01:52.653 回答
0

在 CircleView.xaml 中,您应该包含绑定的源,类似于:

<ContentView x:Name="Self">
<Frame x:Name="circleFrame">
    <Label  x:Name="circleLabel"
            Text="{Binding source={x:reference Self}, Path=CircleText}"/>
</Frame>
</ContentView>
于 2021-09-29T11:11:22.190 回答