Laden...

ListView Zebra look fortführen

Erstellt von m00ni vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.184 Views
M
m00ni Themenstarter:in
16 Beiträge seit 2009
vor 12 Jahren
ListView Zebra look fortführen

Hallo Zusammen!

Ich bin gerade dabei ein eigenen ListView zuer erzeugen. Ich möchte, dass alle Reihen in der Liste abwechselnd gefärbt sind, was ja üblich ist bei vielen listen um die Übersicht zu steigern. Das habe ich bereits problemlos lösen können.

Nun möchte ich aber gerne, dass diese Einfärbung über den Rest der ListView fortgesetzt wird. Also so, dass auch die freien Plätze für die es noch keinen Eintrag gibt schon die entsprechende Färbung haben. Ich dachte dabei ob es nicht vielleicht möglich ist das "Muster" als Hintergrund der ListView zu setzen und dann die Listview Items davor anzuzeigen.

Ist sowas möglich? Gibt es alternativen das zu lösen?

Gruß,
m00ni

M
7 Beiträge seit 2011
vor 12 Jahren

Wenn die Items eine vordefinierte Höhe haben, wäre der einfachste Weg wohl, für das ListView einfach eine Hintergrundgrafik mit dem Zebralook zu erstellen. Diese würde man dann einfach im Hintergrund einblenden:


<ListView Name="lw1" Margin="0,0,148,94">
            <ListView.Background>
                <ImageBrush ImageSource="/Foo;component/Images/Blaue%20Berge.jpg"/>
            </ListView.Background>
            <ListViewItem Content="item1" Height="15" />
            <ListViewItem Content="item2" Height="15" />
            <ListViewItem Content="item3" Height="15" />
        </ListView>

Die Grafik dann einfach so groß gestallten, das sie die maximale Size des ListView umfasst.

Ob das ganze auch dynamisch im Code geht, weiß ich allerdings nicht, da ja unterhalb der items nichts mehr ist, wonach sich das Farbmuster ausrichten könnte.

P
157 Beiträge seit 2010
vor 12 Jahren

via ItemContainerStyle
Hier der Style als Ressource definiert


<Style x:Key="UnserStyle" TargetType="{x:Type ListViewItem}">
            <Style.Triggers>
                <Trigger Property="ItemsControl.AlternationIndex" Value="0">
                    <Setter Property="Background" Value="Red"></Setter>
                </Trigger>
                <Trigger Property="ItemsControl.AlternationIndex" Value="1">
                    <Setter Property="Background" Value="Blue"></Setter>
                </Trigger>
            </Style.Triggers>
        </Style>

im ListView muss jetzt noch AlernationCount auf 2 gesetzt werden und ItemContainerStyle wird unser vordefinierter Style


<ListView ItemContainerStyle="{StaticResource ResourceKey=UnserStyle}" AlternationCount="2">
...
</ListView>

M
m00ni Themenstarter:in
16 Beiträge seit 2009
vor 12 Jahren

Hey PPK und maikSF,

Zunächst mal zu PPK, dass hab ich soweit schon hinbekommen und funktioniert ja einwandfrei. Aber wenn mich nicht alles täuscht färbt deine Lösung nur die vorhandenen Plätze ein und nicht zusätzlich den leeren Platz. Denn so weit war ich schon. Danke trotzdem für deine Antwort!

@maikSF
Das Prolem an der Variante ist, wie das Bild auf das verändern der Größe des ListViews reagiert. Wenn es länger gezogen wird müsste das Bild ja auch länger werden. Ansonsten war das auch schon meine Idee. Hast du irgendwelche Vorschläge wie ich das löse bei ner ListView deren größe variabel ist? Die ListViewItems haben immer die gleiche Größe.