在Xamarin MVVM应用程序中,如何从ViewModel更改屏幕上看到的内容?
My application viewModel响应用户单击按钮查看测试结果:在Xamarin MVVM应用程序中,如何从ViewModel更改屏幕上看到的内容?,xamarin,xamarin.forms,Xamarin,Xamarin.forms,My application viewModel响应用户单击按钮查看测试结果: private void AddDetailRows(List<QuizHistory> quizHistoryList) { quizDetails.Children.Clear(); quizDetails.Children.Add(AddData(quizHistoryList)); quizDetails.Children.Add(n
private void AddDetailRows(List<QuizHistory> quizHistoryList)
{
quizDetails.Children.Clear();
quizDetails.Children.Add(AddData(quizHistoryList));
quizDetails.Children.Add(new LineTemplate());
}
private void AddDetailRows(列表)
{
quizDetails.Children.Clear();
quizDetails.Children.Add(AddData(quizStoryList));
quizDetails.Children.Add(newlinetemplate());
}
其中quizDetails是视图中元素的名称
但这对我来说不起作用,因为视图模型不知道视图是什么样子,也无权访问元素的名称
在MVVM应用程序中,这个问题是如何解决的?您完全正确,这不是ViewModel的责任。 所以,无论您想对UI做什么,都不是ViewModel的责任。 如果这真的是唯一的选项,那么您可以考虑在VM中创建布尔属性并将它们绑定到视图,然后在绑定到VM的button click命令上将布尔值从false更改为true,反之亦然。 要简化它: MyView.xaml
<StackLayout>
<Button Command="{Binding ShowHideQuizHistoryCommand}" ... />
<StackLayout x:Name="QuizHistory"
IsVisible={Binding ShowQuizHistory }>
//
</StackLayout>
</StackLayout>
因此,这只是一个基于您提供的问题的示例。
您也可以使用可视状态、转换器、触发器和行为来实现这一点,但我认为这是最简单的方法。您完全正确,这不是ViewModel的责任。 所以,无论您想对UI做什么,都不是ViewModel的责任。 如果这真的是唯一的选项,那么您可以考虑在VM中创建布尔属性并将它们绑定到视图,然后在绑定到VM的button click命令上将布尔值从false更改为true,反之亦然。 要简化它: MyView.xaml
<StackLayout>
<Button Command="{Binding ShowHideQuizHistoryCommand}" ... />
<StackLayout x:Name="QuizHistory"
IsVisible={Binding ShowQuizHistory }>
//
</StackLayout>
</StackLayout>
因此,这只是一个基于您提供的问题的示例。
您也可以使用视觉状态、转换器、触发器和行为来实现这一点,但在我看来,这是最简单的方法。我认为类似的事情在这里已经讨论过,您想要添加什么样的元素?quizDetails是什么类型的元素?您可以创建该元素的自定义控件并对其进行必要的更改,类似于ListView的工作方式。。。正如@iSpain17所提到的,提供更多关于您试图清除的元素类型的详细信息,并且我认为类似的事情在这里讨论了您试图添加的元素类型?quizDetails是什么类型的元素?您可以创建该元素的自定义控件并对其进行必要的更改,类似于ListView的工作方式。。。正如@iSpain17所提到的,请提供有关您试图清除和添加的元素类型的更多详细信息