2017-06-12 95 views
0

在我的android項目中,webview url是動態的。我在視圖方面使用mvvmcros綁定,但它不是動態的。如果視圖模型上的網址內容正在改變其未被更新的視圖。誰能幫我嗎?Xamarin Android:基於Viewmodel的動態更新UI

查看

public string WebContentUrll { get; set; }  
protected override void OnCreate(Android.OS.Bundle bundle)  
{   
    var bindingSet = this.CreateBindingSet<view, ViewModel>(); 
    bindingSet.Bind(this).For(v => v.WebContentUrll).To(vm => vm.WebContentUrl).TwoWay();  
} 

視圖模型

private string webContentUrl;  
    public string WebContentUrl  
    {  
    get  
    {   
     return webContentUrl;  
    }  
    set  
    {   
     webContentUrl = value;   
     RaisePropertyChanged(() => webContentUrl);  
    }  
    } 
    public void Init() 
    { 
    webContentUrl = "https://.."' 
    } 

網頁內容的URL在頁面加載後,但在Android的看法是不能夠獲得視圖模型的變化值新的更新網址。

任何人都可以請指教。謝謝。

更新

Web視圖打開按鈕上點擊該URL是頁面加載後更新,點擊之前該按鈕

+0

我不確定你想要在這裏做什麼。你在視圖中使用WebView控件嗎? ViewModel是否負責更改URL?你現在擁有它的方式,它只是改變視圖的屬性...它不會加載新的頁面。 – Kiliman

回答

1

從您在開封后的描述。在您的活動中,您已定義了一個屬性WebContentUrll。你想綁定這個並且在它改變時更新它。

WebContentUrll的定義是:

public string WebContentUrll { get; set; } 

這是沒有錯的,你應該看到的價值體現在WebContentUrll當它從視圖模型通過你的綁定變化。但是,沒有代碼更新任何視覺狀態,視圖或基於該屬性的任何東西。

如果您想要更改內容的WebView,你可以修改你的財產是這樣的:

private string _webContentUrll; 
public string WebContentUrll 
{ 
    get => _webContentUrll; 
    set 
    { 
     _webContentUrll = value; 
     _webView.LoadUrl(_webContentUrll); 
    } 
} 

鑑於_webView是你的一個WebView的實例。