代码示例,显示了BindableProperty的一些奇怪问题。 代码位于GitHub https://github.com/jonilviv/BindableProperty-issue.git 这是一个包含3个项目的Xamarin.Forms解决方案:
通常项目是基于CustomTextView
的用户控制ContentView
。此控件具有BindableProperty Text。主窗口有3个自定义控件。而且有一种奇怪的行为:
TextValue
。Text
属性绑定到ViewModel属性TextValue
。还有一个问题:TextValue
更改时 - Text
属性未更改。 Text
,一切正常。答案 0 :(得分:0)
我认为有两种解决方案:
Text="{Binding Text, Source={x:Reference controlName}}"
之类的内容并设置您的控件名称。我认为你现在应该得到这个当前绑定的错误。或者我错了吗? 已审核的viewmodel代码。这是不正确的。 TextValue属性应该是简单属性,而不是BindableProperty。您需要在viewmodel中实现INotifyPropertyChanged,因此它会更改为更新视图。了解它here
==修订==
将BindableObject作为ViewModel有点奇怪。你得到了很多不需要的方法。
启动您的代码并遇到绑定错误:
我认为BindingDataContext未正确设置为该元素,因此它不会更新文本。设置名称形式MainPage如x:Name =" Page"并像这样绑定