myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: WPF und XAML » XAML ListBox - Wie den Style des letzten Items ändern?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

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

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
SunboX SunboX ist männlich
myCSharp.de-Mitglied

Dabei seit: 13.01.2005
Beiträge: 120
Herkunft: Vogtland


SunboX ist offline

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

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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:

XML-Code:
    <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?
09.01.2015 13:25 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ErfinderDesRades
myCSharp.de-Poweruser/ Experte

avatar-3151.jpg


Dabei seit: 31.01.2008
Beiträge: 5.290


ErfinderDesRades ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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?
10.01.2015 12:17 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
SunboX SunboX ist männlich
myCSharp.de-Mitglied

Dabei seit: 13.01.2005
Beiträge: 120
Herkunft: Vogtland

Themenstarter Thema begonnen von SunboX

SunboX ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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.

SunboX hat dieses Bild (verkleinerte Version) angehängt:
ScreenShot.png
Volle Bildgröße

12.01.2015 08:28 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ErfinderDesRades
myCSharp.de-Poweruser/ Experte

avatar-3151.jpg


Dabei seit: 31.01.2008
Beiträge: 5.290


ErfinderDesRades ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von ErfinderDesRades am 12.01.2015 10:36.

12.01.2015 10:35 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 5 Jahre.
Der letzte Beitrag ist älter als 5 Jahre.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 30.11.2020 11:57