我需要能够在我的 ViewModel 中的 XAML 元素上运行方法,我有 3 个文件 - DataPrepPage.cs、DataPrepPage.xaml 和 DataPrepViewModel.cs。
在我的 XAML(DataPrepPage.xaml) 页面中,我有这样的元素:
<esriUI:MapView x:Name="MapElement"
Map="{Binding Map}"/>
我在父网格元素上设置绑定上下文,如下所示:
<Grid.BindingContext>
<local:DataPrepViewModel/>
</Grid.BindingContext>
当然,我可以像这样在代码隐藏中访问我的 MapView 元素和方法,例如:
MapElement.GraphicsOverlays.Add(MyOverlay);
所以问题是我需要能够在 ViewModel 中执行此操作,但 x:Name 不会将它公开给我的 ViewModel。
目前我的 ViewModel 中有一个静态的
public static MapView MapView;
我在页面代码隐藏的构造函数中将我的元素分配给它:
public DataPrepPage ()
{
InitializeComponent ();
DataPrepViewModel.MapView = MapElement;
}
这允许我在我的 ViewModel 中执行此操作:
MapView.GraphicsOverlays.Add(MyOverlay);
所以问题是:
如何在不使用静态的情况下将元素公开给我的 ViewModel?|| 如何在 ViewModel 中的元素上运行方法?