我的页面布局如下:
<StackLayout x:Name="detailsLayout" VerticalOptions="FillAndExpand">
</StackLayout>
创建ViewModel时,我传递了指向页面的指针。我想做的是这样:
公共类CardsViewModel:BaseViewModel {
private readonly Cards cardsPage;
public CardsViewModel(Cards cardsPage)
{
this.cardsPage = cardsPage;
}
async public Task CardBtn()
{
cardsPage.detailsLayout.Children.Clear();
但是由于其保护级别,我无法访问detailsLayout。
有人可以告诉我如何获得此权限吗?
答案 0 :(得分:1)
上面的示例是耦合和打破ViewModel
和View(Page)
之间的分隔符的示例。如果您想从MVVM
模式中受益-不要保留对UI层的引用,绝对不要尝试直接在ViewModel
中操纵UI层。
您应该做什么取决于您的需求,但是我可以给您一些建议:
ViewModel
绑定到的委托,命令或属性以触发特定事件。MessagingCenter
与ViewModel
进行通信。祝你好运。
P.S .:您可以在official Xamarin documentation中找到有关MessagingCenter
的更多信息和示例。只是不要忘记退订,否则您会发现自己陷入困境。