gpt4 book ai didi

.net - WPF 中的 MVVM - UserControls 和 GMap.NET

转载 作者:行者123 更新时间:2023-12-03 10:33:25 26 4
gpt4 key购买 nike

我已经阅读了几乎所有的教程并检查了堆栈问题,但是我仍然不知道也不明白如何在 MVVM 中管理 WPF UserControls,尤其是 GMap.NET 等其他人提供的那些。

我试图在我的应用程序中遵循 MVVM 模式,但是我不知道如何在其中初始化和管理 GMap.NET WPF 控件。在标准方法中,它需要这样的管理:

gmap.MapProvider = GMap.NET.MapProviders.GoogleMapProvider.Instance;
GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.ServerOnly;
gmap.DragButton = MouseButton.Left;
gmap.SetPositionByKeywords("Paris, France");
gmap.ShowCenter = false;

如何在不制动 MVVM 的情况下做到这一点?是否可以?如果有任何帮助,我将不胜感激。

最佳答案

正如评论中所建议的,任何只是初始化 View 的代码都可以放在后面的代码中。

如果可能, View 模型中的属性应该绑定(bind)到 View 中。这是首选方式,应该击败大多数用例。

但是,有些控件很复杂,并且有一个“高级”API,它不仅包含依赖属性,还包含方法和事件。

如果需要从 View 模型中调用“ View 方法”,则基于事件的方法可以正常工作。因为 View 知道 View 模型,它可以订阅 View 模型上的事件(例如在 DataContextChanged 事件中)。 (另见 that answer)
示例:你想调用方法gmap.SetPositionByKeywords从 View 模型。只需给 View 模型一个事件 RequestSetPositionByKeyWords ,让 View 订阅该方法并调用 gmap.SetPositionByKeywords如果事件已被提出。参数和返回值可以通过事件参数传递。这是一个尊重 MVVM 原则的好方法。

关于.net - WPF 中的 MVVM - UserControls 和 GMap.NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45152773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com