Wir haben eine Anforderung, die Bilder in einer GridView
inkrementell anzuzeigen. Um also die ausgewählten Objekte in GridView
, IsSelected
zu finden, hat die Eigenschaft GridView
mit der entsprechenden Bindungsobjekteigenschaft CLR object
(Eigenschaft des Typs GridView's ItemSource
) eine Bindung. Seit unterstützt RelativeSouce
und Setter Bindung in Stil nicht, so dass nach einigen Suche im Internet fanden wir den folgenden Code.GridViewItem IsSelected Bindung in UWP App
public class GridViewEx : GridView
{
protected override void PrepareContainerForItemOverride(Windows.UI.Xaml.DependencyObject element, object item)
{
base.PrepareContainerForItemOverride(element, item);
var gridItem = element as GridViewItem;
var binding = new Binding { Mode = BindingMode.TwoWay, Source = item, Path = new PropertyPath("IsSelected") };
gridItem.SetBinding(SelectorItem.IsSelectedProperty, binding);
}
}
Aber es scheint, dass es einen Fehler mit dem obigen Ansatz gibt. Jedes Mal, wenn die Seite zum Laden der nächsten Fotos heruntergerollt wird, verlieren die zuvor ausgewählten Objekte ihre Auswahl.
Hat jemand dieses Problem vor oder irgendwelche Vorschläge erfahren, um das oben genannte Problem zu lösen?
Aber wie an GridViewItem.IsSelectedProperty zu binden, um IsSelected im Hintergrund für jedes Benutzer ausgewählte Element auf der Seite festlegen? – user1672994
Wenn Benutzer auf das Objekt tippen, das Modell abrufen, die IsSelected-Eigenschaft abrufen und auf true festlegen. Vergiss 'GridViewItem.IsSelectedProperty', es hat nichts zu tun, da ich es in meinem Beispiel ignoriere. – thang2410199
Jeder? Dies ist wichtig für fast jede Anwendung, die ich kenne und es gibt keine zuverlässige Möglichkeit, dies zu tun. – SuperJMN