Commands aus ListView ausführen

Mit Hilfe einer ListView ist es einfach möglich, Daten aus einer Datenquelle darzustellen. Dazu ist lediglich die Eigenschaft View zu definieren. Durch die Angabe von GridViewColumn Elementen und dem dazugehörigen DisplayMemberBindings werden die Daten aus der zugewiesenen Datenquelle auch schon angezeigt.

<ListView ItemsSource="{Binding MyOpenTickets}" BorderThickness="0" Margin="4">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Id" 
                            DisplayMemberBinding="{Binding Id}"/>
            <GridViewColumn Header="Name"
                            DisplayMemberBinding={Binding Name}/>
            <GridViewColumn Header="Version" 
                            DisplayMemberBinding="{Binding Version.Name}"/>
            <GridViewColumn Header="Status" 
                            DisplayMemberBinding="{Binding State}"/>
        </GridView>
    </ListView.View>
</ListView>

Eine Anforderung ist nun sehr oft, dass die angezeigten Daten in einem Detailfenster geöffnet werden sollen. Dazu muss – idealerweise – ein Command untergebracht werden. Dies kann durch die Angabe eines CellTemplates bewerkstelligt werden.

<ListView ItemsSource="{Binding MyOpenTickets}" BorderThickness="0" Margin="4">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Id" 
                            DisplayMemberBinding="{Binding Id}"/>
            <GridViewColumn Header="Name" 
                            CellTemplate="{StaticResource TicketClickableButton}"/>
            <GridViewColumn Header="Version" 
                            DisplayMemberBinding="{Binding Version.Name}"/>
            <GridViewColumn Header="Status" 
                            DisplayMemberBinding="{Binding State}"/>
        </GridView>
    </ListView.View>
</ListView>

In der zweiten GridViewColumn-Definition wird das CellTemplate definiert. Zu beachten ist an dieser Stelle, dass kein DisplayMemberBinding angegeben werden darf. Hier nun das verwendete Template:

<DataTemplate x:Key="TicketClickableButton">
    <Button Command="{Binding OpenTicketCommand}" 
            Content="{Binding Name}" 
            Style="{StaticResource ProjectLinkButton}" />
</DataTemplate>

Das Template stellt eine einfache Schaltfläche dar, welche an einen Command gebunden ist. Zusätzlich wird an der Schaltfläche das Binding definiert.

Eine mögliche Umsetzung kann so aussehen:

Veröffentlicht von Norbert Eder

Ich bin ein leidenschaftlicher Softwareentwickler. Mein Wissen und meine Gedanken teile ich nicht nur hier im Blog, sondern auch in Fachartikeln und Büchern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Cookie-Einstellungen
Auf dieser Website werden Cookie verwendet. Diese werden für den Betrieb der Website benötigt oder helfen uns dabei, die Website zu verbessern.
Alle Cookies zulassen
Auswahl speichern
Individuelle Einstellungen
Individuelle Einstellungen
Dies ist eine Übersicht aller Cookies, die auf der Website verwendet werden. Sie haben die Möglichkeit, individuelle Cookie-Einstellungen vorzunehmen. Geben Sie einzelnen Cookies oder ganzen Gruppen Ihre Einwilligung. Essentielle Cookies lassen sich nicht deaktivieren.
Speichern
Abbrechen
Essenziell (1)
Essenzielle Cookies werden für die grundlegende Funktionalität der Website benötigt.
Cookies anzeigen