【发布时间】:2018-10-21 13:27:19
【问题描述】:
我在自定义控件中使用可绑定属性,以便从 xaml 代码设置属性。但是,似乎我的属性总是会获得我为可绑定属性指定的默认值。
我的 xaml 代码:
<controls:MyView ID="4" />
我的代码:
public partial class MyView : ContentView
{
public static readonly BindableProperty IDProperty = BindableProperty.Create(
nameof(ID),
typeof(int),
typeof(MyView),
15);
public int ID
{
get
{
return (int)GetValue(IDProperty);
}
set
{
SetValue(IDProperty, value);
}
}
private MyViewViewModel viewModel;
public MyView()
{
InitializeComponent();
viewModel = new MyViewViewModel() {};
BindingContext = viewModel;
}
}
我希望我的属性在这个例子中应该得到值 4,但它总是得到默认值 15。该属性应该在构造函数中设置还是稍后设置?
我做错了什么?
【问题讨论】:
-
你能分享你的控件的所有代码,尤其是构造函数吗?也许您错误地设置了 BindingContext ...
-
@EvZ 我已经更新了上面的代码。
-
为什么要在 CustomControl 中嵌入 ViewModel?
-
它不起作用,因为
BindingContext指向MyViewViewModel对象。如果您想让它起作用,请将BindingContext = viewModel;更改为BindingContext = this。顺便说一句,MyViewViewModel字段不是必需的。我希望它有所帮助。
标签: c# xaml xamarin xamarin.forms