2017-06-12 2 views
0

Dans mon projet android, l'URL de webview est dynamique. J'utilise la liaison mvvmcros du côté de la vue, mais ce n'est pas dynamique. Si le contenu de l'URL sur le modèle de vue change, il n'est pas mis à jour à la vue. Quelqu'un peut m'aider?Xamarin Android: Interface de mise à jour dynamique basée sur Viewmodel

Voir

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();  
} 

ViewModel

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

La valeur URL de contenu web dans les changements du modèle de vue après la page est chargée, mais la vue Android n'est pas en mesure d'obtenir la nouvelle URL mise à jour.

Quelqu'un peut-il s'il vous plaît aviser. Je vous remercie.

Mise à jour

La vue Web est ouvert sur un bouton clic et l'URL est mis à jour après le chargement de la page et avant que le bouton est cliqué

+0

Je ne suis pas vraiment sûr de ce que vous essayez de faire ici. Utilisez-vous un contrôle WebView dans la vue? Le ViewModel est-il responsable de la modification de l'URL? La façon dont vous l'avez maintenant, il change simplement la propriété sur la vue ... il ne charge pas une nouvelle page. – Kiliman

Répondre

1

De vous la description du poste d'ouverture. Dans votre activité, vous avez défini une propriété WebContentUrll. Vous voulez lier ceci et mettre à jour quelque chose quand il est changé.

La définition de WebContentUrll est:

public string WebContentUrll { get; set; } 

Ce n'est pas mal et vous devriez voir la valeur reflétée dans WebContentUrll lorsqu'il passe de la ViewModel par votre liaison. Cependant, il n'y a pas de code mettant à jour les états visuels, les vues ou tout autre élément basé sur cette propriété.

Si vous avez un WebView vous voulez modifier le contenu pour, vous pouvez modifier votre propriété à quelque chose comme:

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

Étant donné que _webView est votre instance d'un WebView.