Xamarin.Forms ViewModel 在页面加载时访问了两次
Xamarin.Forms ViewModel visited twice on Page load
我在为我的页面调试其中一个 ViewModel 的代码时发现了它。
我的页面代码是这样的:
protected override void OnAppearing()
{
this.BindingContext = new ACheckPageViewModel();
}
public ACheckPage ()
{
InitializeComponent ();
ACheckPageViewModel viewmodel = new ACheckPageViewModel();
//some code that needs viewmodel reference:
if (viewmodel.SomeValue == "")
{
SomeValue.IsVisible = false;
}
}
在 OnAppearing 中,我为我在页面和视图模型之间所做的一切设置了绑定上下文。
在 ACHeckPage() 主要方法中,我再次引用视图模型以在页面上设置一些依赖于视图模型其他值的属性。
我无法从 viewmodel 访问这些 xaml 控件,这就是我在 main 方法中再次引用 viewmodel 的原因。
我发现当我加载页面和调试视图模型时,断点被访问了两次。
我从 XAML 设置绑定上下文的页面是这样的:
<ContentPage.BindingContext>
<vm:FeaturedPageViewModel/>
</ContentPage.BindingContext>
不要加载视图模型两次。
如何在不通过代码两次 运行 的情况下根据 ViewModel 其他 属性 更改页面控件的属性?
你初始化了两次。一次在 OnAppearing 中,一次在构造函数中。
尝试创建一个 属性:
public ACheckPageViewModel VM {get; set;}
OnAppearing 是这样设置的:
VM = new ACheckPageViewModel();
this.BindingContext = VM;
之后,您可以根据需要随意使用 VM 属性。
我在为我的页面调试其中一个 ViewModel 的代码时发现了它。
我的页面代码是这样的:
protected override void OnAppearing()
{
this.BindingContext = new ACheckPageViewModel();
}
public ACheckPage ()
{
InitializeComponent ();
ACheckPageViewModel viewmodel = new ACheckPageViewModel();
//some code that needs viewmodel reference:
if (viewmodel.SomeValue == "")
{
SomeValue.IsVisible = false;
}
}
在 OnAppearing 中,我为我在页面和视图模型之间所做的一切设置了绑定上下文。
在 ACHeckPage() 主要方法中,我再次引用视图模型以在页面上设置一些依赖于视图模型其他值的属性。
我无法从 viewmodel 访问这些 xaml 控件,这就是我在 main 方法中再次引用 viewmodel 的原因。
我发现当我加载页面和调试视图模型时,断点被访问了两次。
我从 XAML 设置绑定上下文的页面是这样的:
<ContentPage.BindingContext>
<vm:FeaturedPageViewModel/>
</ContentPage.BindingContext>
不要加载视图模型两次。
如何在不通过代码两次 运行 的情况下根据 ViewModel 其他 属性 更改页面控件的属性?
你初始化了两次。一次在 OnAppearing 中,一次在构造函数中。 尝试创建一个 属性:
public ACheckPageViewModel VM {get; set;}
OnAppearing 是这样设置的:
VM = new ACheckPageViewModel();
this.BindingContext = VM;
之后,您可以根据需要随意使用 VM 属性。