xaml - 如何将值绑定到引用的自定义内容页面 (XAML)
问题描述
我创建了一个自定义 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); }
}
}
解决方案
你可以试试下面的代码。
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;
}
推荐阅读
- c++ - 如何编写用户可以提供数组元素的代码?
- django - 为什么我的 django 网络服务器在尝试发送密码重置邮件后停止
- c - 如何在 GBDK 上获得随机数?
- maven - 如何使用 curl 从 REST API 在 Nexus 2 上上传具有不同分类器和相同 pom.xml 的 jar?
- spring-boot - osbwservlet.support.ErrorPageFilter : 从请求 [0] Primefaces 转发到错误页面
- mysql - 如何使用 regexp_substr MariaDB 从字符串中提取最后一个日期
- wpf - 如何将正确的上下文传递给 WPF ListView 的 ItemTemplate 中的 DataTemplate
- javascript - 赛普拉斯 waitUntil 元素被聚焦
- r - 数据管理:使用 R 展平数据
- python - 如何修复数据框拆分和爆炸方法无法正常工作?