In meiner Metro-Stil-App für Windows 8 binde ich einen Listview an eine ObservableCollection und möchte, dass die Hintergrundfarbe jedes ListViewItems wechselt (weiß, grau, weiß usw.)
%Vor%In WPF geschieht dies mithilfe eines Stils mit Triggern - siehe Seite .
Wie erreichen Sie dies in einer Metro App?
Aktualisierung:
Nachdem die richtige Antwort unten gegeben wurde, bin ich weggegangen und habe es tatsächlich codiert. Hier ist ein Code für jeden, der es braucht:
Code für die Wertkonverterklasse:
%Vor%Code für XAML-Listenansicht:
%Vor%... und wenn Sie Elemente zur Sammlung hinzufügen oder die Sammlung ändern, denken Sie daran, ihren Index innerhalb der Sammlung festzulegen:
%Vor%Natürlich, wenn sich Ihre Sammlung häufig ändert, ist es sehr kostspielig, diese Methode beizubehalten, da Sie Ihre Artikel neu indizieren müssen. Daher fand ich es einfacher, einen Verweis auf die übergeordnete Sammlung in jedem Artikel zu speichern und dann zu berechnen Der Index wird on-the-fly mit .IndexOf () verwendet, um zu vermeiden, dass die Indexwerte bei jeder Änderung der Sammlung ständig aktualisiert werden müssen.
Sie können einen Konverter verwenden - nehmen Sie einen Zeilenindex von einem Objekt und wandeln Sie ihn in einen Pinsel um. Auch wenn ItemTemplate Ihnen nicht genug Kontrolle gibt, verwenden Sie ItemContainerStyle, um den Pinsel auf der ListViewItem-Vorlagenebene zu ändern.
Eine weitere Option könnte darin bestehen, einen ItemTemplateSelector anzugeben, der Ihnen je nach Artikel eine andere Vorlage mit einem anderen Pinsel bietet. Sie müssten dennoch Zeilenindizes generieren oder den Selektor irgendwie aktivieren, um festzustellen, ob sich das Element an einer geraden oder ungeraden Position befindet.
Habe nie versucht, so zu stylen, aber was wäre, wenn:
Sie binden eine Hintergrundfarbe an eine Eigenschaft und diese Eigenschaft wird über IValueConverter entsprechend dem Index des aktuellen Elements in der Listenansicht festgelegt.
Wenn ich einen Sinn habe.
Bearbeiten:
Lustige Sache, während ich meine Antwort schrieb, kam Filip Skakun mit genau derselben Idee.
Ich suche online und fand eine Technik, die das Hinzufügen einer Indexeigenschaft zu dem betreffenden Modell und das Hinzufügen eines Konverters zu der DataTemplate beinhaltete. Dies war nicht ideal, da nur der Inhalt des Listenelements geändert wurde. Je nach Ausrichtung und Ausrichtung des Inhalts sehen Sie also Lücken im Hintergrund der Zeile. Ich mochte auch nicht den Code-Geruch der Modifizierung meiner Datenmodellobjekte mit UI-Code.
Versuchen Sie es, es wird helfen, Ссылка
Tags und Links .net xaml windows-runtime windows-store-apps winrt-xaml