我正在尝试从PageViewModel
绑定属性,这是代码
使用MVVM交叉插件进行绑定。
PageViewModel
public class ScanPageViewModel : BasePageViewModel
{
private bool m_testing;
public bool Testing
{
get => m_testing;
set => Set(ref m_testing, value);
}
}
ContentView Xamal
<ContentView xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:dxui="http://dips.xamarin.ui.com"
xmlns:Resources="clr-namespace:Visit.Mobile.Common.Resources;assembly=Visit.Mobile.Common"
xmlns:Shared="clr-namespace:Visit.Mobile.Views.Shared;assembly=Visit.Mobile"
xmlns:Scan="clr-namespace:Visit.Mobile.Views.Scan;assembly=Visit.Mobile"
xmlns:Appearance="clr-namespace:Visit.Mobile.Appearance;assembly=Visit.Mobile"
xmlns:PageViewModels="clr-namespace:Visit.Mobile.Common.ViewModels.PageViewModels;assembly=Visit.Mobile.Common"
mc:Ignorable="d"
x:Class="Visit.Mobile.Views.Scan.ScanPage"
x:Name="contentView">
<ContentView.BindingContext>
<PageViewModels:ScanPageViewModel/>
</ContentView.BindingContext>
<Grid RowSpacing="0"
ColumnSpacing="0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="285" />
<RowDefinition Height="80" />
</Grid.RowDefinitions>
<Label IsVisible="{Binding Testing}"
Text="Testing"
Grid.Row="1"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand" />
</Grid>
</ContentView>
我正在使用其他页面视图模型设置数据
第二页视图模型
m_ScanPageViewModel.Testing = true; `setting in constructor`
这不具有约束力。
我在这里错过了什么吗?
答案 0 :(得分:0)
在使用MVVMCross时,您可以像...那样简单地更新属性。
private bool _myProperty;
public bool MyProperty
{
get => _myProperty;
set
{
_myProperty = value;
RaisePropertyChanged(() => MyProperty);
// take any additional actions here which are required when MyProperty is updated
}
}
https://www.mvvmcross.com/documentation/fundamentals/data-binding
注意:-确保为所有 ViewModels
继承 MvxViewModelhttps://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle