Laden...

XAML ListBox - Wie den Style des letzten Items ändern?

Erstellt von SunboX vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.819 Views
S
SunboX Themenstarter:in
120 Beiträge seit 2005
vor 9 Jahren
XAML ListBox - Wie den Style des letzten Items ändern?

Ich habe eine RadDataBoundListBox (von Telerik), die die Elemente einer Liste darstellt. Jedes Item wird durch einen Unterstrich getrennt x:Name="ItemSeparatorBorder". Die ListBox selbst hat einen Header und einen Footer, die auch eine Linie enthalten (x:Name="ListTopBorder und x:Name="ListBottomBorder"). Jetzt suche ich einen Weg, die Linie des letzten ListBox Items (x:Name="ItemSeparatorBorder") zu deaktivieren. Aktuell hat die ListBox am Ende zwei Linien, die des letzten Items und die des Footer.

Ich dachte an ein Visibility Binding der x:Name="ItemSeparatorBorder" mit einem Konverter, der den Index des aktuellen Elements mit der Gesamtzahl der ListBox Elemente vergleicht. Aber ich weiß nicht, wie es implementieren kann, und ich habe auch kein gutes Beispiel über die Suche gefunden.

Der Code sollte auf Windows Phone 8.0 / .NET 4.0 laufen.

Dies ist mein Code so weit:

    <telerikPrimitives:RadDataBoundListBox
        x:Name="ListBox"
        ItemsSource="{Binding Items}">

        <telerikPrimitives:RadDataBoundListBox.ListHeaderTemplate>
            <DataTemplate>
                <Grid Height="30">
                    <Border
                        x:Name="ListTopBorder"
                        Height="1" 
                        VerticalAlignment="Bottom"
                        Background="Blue"/>
                </Grid>
            </DataTemplate>
        </telerikPrimitives:RadDataBoundListBox.ListHeaderTemplate>

        <telerikPrimitives:RadDataBoundListBox.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="*"></RowDefinition>
                        <RowDefinition Height="1"></RowDefinition>
                    </Grid.RowDefinitions>

                    <controls:ListItem Margin="30,10,0,10">/>

                    <Border 
                        x:Name="ItemSeparatorBorder"
                        Grid.Row="1" 
                        Height="1" 
                        Background="Blue" 
                        Margin="30,0,0,0"/>

                </Grid>
            </DataTemplate>
        </telerikPrimitives:RadDataBoundListBox.ItemTemplate>

        <telerikPrimitives:RadDataBoundListBox.ListFooterTemplate>
            <DataTemplate>
                <Grid Height="30">
                    <Border
                        x:Name="ListBottomBorder"
                        Height="1" 
                        VerticalAlignment="Top"
                        Background="Blue"/>
                </Grid>
            </DataTemplate>
        </telerikPrimitives:RadDataBoundListBox.ListFooterTemplate>

    </telerikPrimitives:RadDataBoundListBox>

Wie kann ich die Border des letzten Items ausblenden?

Actionscript ist die Möglichkeit, postmaterielles Basteln zum Lebensstil zu machen.

Künstliche Intelligenz ist leichter zu ertragen, als natürliche Dummheit!

5.299 Beiträge seit 2008
vor 9 Jahren

kannst du nicht vom Footer die obere Border wegmachen?

Weil deren Aufgabe ist ja bereits durchs letzte Item abgedeckt, und dieses DoppelGemoppel scheint ja das Problem, odr?

Der frühe Apfel fängt den Wurm.

S
SunboX Themenstarter:in
120 Beiträge seit 2005
vor 9 Jahren

Leider nein. 😦 Die Trennungslinien zwischen den einzelnen Items sollen laut Layout anders ausschauen, als die des Header/Footer. Im Anhang ist ein ScreenShot eines stark vereinfachtes Beispieles.

Actionscript ist die Möglichkeit, postmaterielles Basteln zum Lebensstil zu machen.

Künstliche Intelligenz ist leichter zu ertragen, als natürliche Dummheit!

5.299 Beiträge seit 2008
vor 9 Jahren

na denn viel Spaß.
sehe ich denn auch so, dass du einen Converter basteln musst. Die Anzahl der Item kriegste vom ItemsControl.ItemsSource.Count, und den Index eines Items mit
ItemsControl.ContainerGenerator.IndexFromContainer(Item)

Der frühe Apfel fängt den Wurm.