2017-12-20 6 views
0

Ich habe eine Sichtbarkeit Konverter für Listen, die perfekt funktioniert auf Android, aber ich kann nicht die Convert-Methode in iOS aufgerufen werden.MVVMCross iOS benutzerdefinierte Sichtbarkeit Konverter nicht aufgerufen

public class ListVisibilityConverter : MvxBaseVisibilityValueConverter<IList> 
{ 
    protected override MvxVisibility Convert(IList value, object parameter, CultureInfo culture) 
    { 
     var inverse = false; 
     if (parameter != null) 
     { 
      inverse = (bool)parameter; 
     } 

     var listHasEntries = (value != null) && value.Count > 0; 

     if (inverse) 
     { 
      return listHasEntries ? MvxVisibility.Collapsed : MvxVisibility.Visible; 
     } 
     else 
     { 
      return listHasEntries ? MvxVisibility.Visible : MvxVisibility.Collapsed; 
     } 
    } 
} 

verwende ich den Konverter in einer Bindung innerhalb des ViewDidLoad eines Viewcontroller ...

var set = this.CreateBindingSet<AddFriendsFromContactsViewController, AddFriendsFromContactsViewModel>(); 
set.Bind(collectionView).For("Visibility").To(vm => vm.SectionedCollection).WithConversion("ListVisibility", true); 
set.Bind(noContactsFoundLabel).For("Visibility").To(vm => vm.SectionedCollection).WithConversion("ListVisibility", false); 
set.Apply(); 

In Setup.cs ich den Konverter bestätigt haben, wird mit dem folgenden Code gefunden ...

protected override void InitializeLastChance() 
{ 
    base.InitializeLastChance(); 
    var registry = Mvx.Resolve<IMvxValueConverterLookup>(); 
    var f = registry.Find(BindingStrings.ListVisibility); 
    Mvx.Trace("Custom converter was found : {0}", f != null); 
} 
+0

Nur bestätigen, dass das 'MvvmCross.Plugin.Visibility' NuGet-Paket in Ihrem iOS-Projekt installiert ist? Haben Sie auch versucht, die App zu säubern/zu deinstallieren und neu aufzubauen/zu implementieren? Gibt es Warnungen/Fehler in der Konsolenausgabe? – Plac3Hold3r

+0

Ich habe eine saubere und deinstallieren, gefolgt von einer Neuerstellung und Bereitstellung. Das Problem wurde nicht gelöst. Ich erhalte den folgenden Fehler in der Konsole - "MvxBind: Warnung: 19.80 Fehler beim Erstellen der Zielbindung für die Bindung der Sichtbarkeit für SectionedCollection". SectionedCollection wird von ObservableCollection abgeleitet. –

+0

Ich habe vergessen zu erwähnen, dass ich auch das richtige NuGet-Paket installiert habe. –

Antwort

0

Aufschalten ValueConverterAssemblies im Setup des iOS-Projekt und das manuelle Hinzufügen der Werteumwandler das Problem gelöst.

protected override IEnumerable<Assembly> ValueConverterAssemblies 
{ 
    get 
    { 
     var assemblies = base.ValueConverterAssemblies; 
     var valueConverterAssemblies = assemblies as Assembly[] ?? assemblies.ToArray(); 
     valueConverterAssemblies.ToList().Add(typeof(ListVisibilityConverter).Assembly); 
     return valueConverterAssemblies; 
    } 
} 
Verwandte Themen