2017-07-30 103 views
-1

我已經嘗試了許多選項很長一段時間,這是我想到的最後一個,所以我會試着問: 我想在WPF中開發一個MVVM項目,我有下載了一個隨時可用的WPF控件(GMap.NET)。但是,這個控件不準備在MVVM中使用它,我是一個新手,所以我不想自己修改源代碼。該控件需要設置許多參數(不能通過XAML訪問,因此我不能簡單地綁定它們),並在控件對象上調用一些函數。所以這裏去我的問題:全球訪問WPF控制

我怎樣才能從代碼的任何地方訪問WPF控件實例,並從那裏管理它?

特別是,我想從ViewModel部件訪問一個View元素,並且我知道它會使模式剎車,但我不知道如何避免它,並且我的時間不夠了。

+0

@PeterDuniho,我的問題錯了嗎? – Niko

+0

該控件具有很多依賴屬性..因此它可以在使用MVVM的XAML中使用。你究竟想要歸檔哪些是不可能的? – JanDotNet

+0

@JanDotNet,這裏是我更具體的問題:https://stackoverflow.com/questions/45152773/mvvm-in-wpf-usercontrols-and-gmap-net 我已經問過這個問題,希望得到更通用的解決方案。 – Niko

回答

2

很難說不知道具體的控制。但總的來說,我看到2個選項做出這樣的控制MVVM符合:

  1. 子類的控制,並添加依賴屬性,因此它可以在XAML
  2. 被用來創建一個包裝的unMVVMable控制一個「容器控件」並提供所需的依賴項屬性。

但是,如果控件的API是複雜的並且不僅具有屬性,而且還有一些方法,那麼可以務實地在這裏打破MVVM。 MVVM不是從視圖中分離GUI相關邏輯的唯一方法。例如,您可以使用接口抽象使用的函數,並使用視圖模型中的接口。

+0

「不知道具體的控制」 - 就像我在問題中寫到的那樣:GMap.NET 「你可以用一個接口抽象使用的函數,並在你的視圖模型中使用接口。」 - 你能更具體嗎? – Niko

+0

您編寫了「GMap.NET」...但是快速搜索只顯示帶有該名稱的WinForms控件。你的意思是那個嗎?我鏈接到具體的控制有幫助:)。 – JanDotNet

+0

還有一個WPF:https://greatmaps.codeplex.com/ // https://github.com/radioman/greatmaps/tree/master/GMap.NET.WindowsPresentation – Niko