我想要做的是在视图模型文件中创建和写入所有方法,并且仅将代码放置在自动生成的函数(如 SfDataGrid_SelectionChanged 和其他类似函数)的代码隐藏文件中。因此,当我在视图模型文件中编写代码时,如果我需要访问页面的控件及其属性,我该如何获取它? 此时,视图文件中的 BindingContext 代码如下所示:
<ContentPage.BindingContext>
<viewmodel:MainViewModel x:Name="vm"/>
</ContentPage.BindingContext>
内容页面的名称是MainPage.cs。现在,在 MainPage.cs 内容页面中有一个名为 grpList 的控件。所以在 MainViewModel.cs 文件中我尝试输入
Groups row = (Groups)grpList.SelectedRow;
当我在视图模型中编写时,甚至找不到 grpList 。但是,如果我将其写入内容页的代码隐藏文件中,则会找到它并且没有问题。
那么如何从页面视图模型访问页面的控件及其属性?
您将视图模型的属性绑定到控件。视图模型并不意味着了解视图及其控件。
因此,如果您想要 SelectedRow,您可以在视图模型中创建一个属性,然后从视图绑定到该属性。