Ala*_*an2 9 xamarin xamarin.forms
我有循环并执行等待和其他操作的业务逻辑。目前这是在后面的代码中。
据我所知,这是错误的地方,我应该将其放在 viewModel 中(如果错误请纠正我)。如果是这种情况,那么我的虚拟机中应该有一个 OnAppearing 方法吗?如果是的话,我应该如何将 OnAppearing 传递给视图模型?
目前我的页面 OnAppearing 看起来像这样:
protected async override void OnAppearing()
{
base.OnAppearing();
Title = Settings.mode.Text() + " Deck";
vm.LearnViewVisible = Settings.mode.IsLearn();
vm.PracticeViewVisible = Settings.mode.IsPractice();
vm.QuizViewVisible = Settings.mode.IsQuiz();
vm.QuizStartViewVisible = false;
Run Code Online (Sandbox Code Playgroud)
如果我要将大部分业务逻辑移至 ViewModel,那么这是否意味着所有这些都将移至我在 ViewModel 中创建的 OnAppearing() 方法?
Die*_*cio 15
另一种方法是使用David Britch 的Behaviors.Forms
...
<ContentPage.Behaviors>
<behaviors:EventHandlerBehavior EventName="Appearing">
<behaviors:InvokeCommandAction Command="{Binding PageAppearingCommand}" />
</behaviors:EventHandlerBehavior>
<behaviors:EventHandlerBehavior EventName="Disappearing">
<behaviors:InvokeCommandAction Command="{Binding PageDisappearingCommand}" />
</behaviors:EventHandlerBehavior>
</ContentPage.Behaviors>
...
Run Code Online (Sandbox Code Playgroud)
或者Xamarin 社区工具包 EventToCommandBehavior
<ContentPage.Behaviors>
<xct:EventToCommandBehavior
EventName="Appearing"
Command="{Binding PageAppearingCommand}" />
<xct:EventToCommandBehavior
EventName="Disappearing"
Command="{Binding PageDisappearingCommand}" />
</ContentPage.Behaviors>
Run Code Online (Sandbox Code Playgroud)
相关问题:EventHandlerBehavior 与 EventToCommandBehavior
val*_*asm -1
这是我的解决方案的示例
public partial class TaskDetailsPage : MvvmContentPage
{
private readonly TaskDetailsViewModel _model;
public TaskDetailsPage()
{
InitializeComponent();
Shell.SetNavBarIsVisible(this, true);
Shell.SetTabBarIsVisible(this, false);
_model = BindingContext as TaskDetailsViewModel;
}
protected override string NavigationRoute => UniqeCodes.Routes.TaskDetailsPage;
protected override void OnAppearing()
{
_model.Init();
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10557 次 |
最近记录: |