Ich habe eine Listview mit diesem Artikel Vorlage:XAML Bindung Intellisense in einer separaten InhaltAlle Datei in einem Listview verwendet
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<views:ProjectListEntry />
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
ProjectListEntry
ziemlich komplex ist und in einem anderen Listview verwendet, so habe ich es in einer eigenen Datei . Ich habe es wie folgt ein:
<ContentView
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
...
BindingContext="{x:Static vms:DesignTimeData.ProjectListEntryVm}">
Wie Sie sehen können, verbindlich Intellisense (unter Verwendung von ReSharper) zu bekommen, habe ich versucht BindingContext
auf ein statisches Element auf der DesignTimeData Klasse zu setzen. Dies funktioniert gut für meine Pages (wo ich den BindingContext zur Laufzeit ersetze), aber für ContentViews, die in ListViews verwendet werden, scheint der BindingContext von ContentView geerbt zu sein (von der ViewCell, nehme ich an). Dies bedeutet, dass der explizite BindingContext in meinem ContentView den BindingContext überschreibt, der von ListView in der ViewCell festgelegt wurde, und alle meine Listenelemente spiegeln die statischen Entwurfszeitdaten zur Laufzeit wider. Aber wenn ich den BindingContext entferne, erhalte ich keine IntelliSense für die Member, an die ich innerhalb der ContentView-Datei binde.
Gibt es eine einfache Möglichkeit, Intellisense für Bindungen in einem ContentView wie diesem zu erhalten?
(Wie erwähnt, kann ich ContentView nicht in der ListView-Definition inline, weil die ContentView ziemlich komplex ist und in mehreren Listen verwendet wird. Ich kann auch keine Art von VM-Locator verwenden, weil ich zwar benutze Bindings, ich benutze nicht "volle" MVVM - ich benutze stattdessen eine Redux-ähnliche Architektur. Und ich denke, ein VM-Locator würde in diesem Fall sowieso nicht funktionieren, aus den gleichen Gründen funktioniert das obige nicht.)
(aus dem Xamarin Forums Cross-gepostet wo ich keine Antwort bekommen habe.)