| 

.NET C# Java Javascript Exception

6
Hallo,
ich benötige für mein Projekt eine ListBox mit mehreren Items, die man ausklappen, d.h. erweitern kann. Im Grundzustand soll nur eine Art Überschrift angezeigt werden, wenn man auf einen Button oder ähnliches klickt, fährt der Rest aus.

Element geöffnet

Ist so etwas möglich und wenn ja wie?
Ich wäre für Hilfe wirklich sehr dankbar und hoffe meine Frage ist nicht zu dumm, ich kenn mich nämlich noch nicht so gut mit WPF aus.
Vielen Dank für eure Hilfe.
05.02.2012
Simon Rühle 147 1 7
3 Antworten
1
Hallo,

für diese Darstellung sollte doch der "Expander" das Mittel der Wahl sein.

Hier ein Beispiel: Expander Beispiel
05.02.2012
SensenMannLE 1,2k 2 9
0
Jetzt habe ich doch noch ein Problem.
Wenn man eines dieser Expander Items erweitert, soll mein Prgramm die zugehörigen Daten laden und als Datencontext einstellen.
Da allerdings die Anzahl an Items variabel ist, kann ich die Expander nicht direkt ansprechen.
Wie ist dies möglich?
<DataTemplate x:Key="MainOverviewListBoxItemTemplate">
<!--<TextBlock Text="{Binding Path=HeaderName}" Margin="3,0,0,10" FontSize="24" TextWrapping="WrapWithOverflow"/>-->
<Expander Header="{Binding Path=HeaderName}" Height="35" HorizontalAlignment="Left" Name="ExpanderDataEntry" VerticalAlignment="Top" Width="208" Expanded="ExpanderDataEntry_Expanded">
<StackPanel>
<TextBlock Height="35" HorizontalAlignment="Left" Name="textBlock2US" Text="Verwendung" VerticalAlignment="Top" Width="192" FontSize="25"/>
<TextBox Height="40" HorizontalAlignment="Left" Name="DetailViewTextBoxDataEntryName" Text="{Binding Path=DataEntryName}" TextWrapping="Wrap" VerticalAlignment="Top" Width="360" FontSize="20"/>
<TextBlock Height="35" HorizontalAlignment="Left" Name="textBlock2PW" VerticalAlignment="Top" Width="255" Text="Passwort" FontSize="25"/>
<TextBox Height="40" HorizontalAlignment="Left" Name="DetailViewTextBoxPassword" Text="{Binding Path=Password}" TextWrapping="Wrap" VerticalAlignment="Top" Width="360" FontSize="20"/>
<TextBlock Height="35" HorizontalAlignment="Left" Name="textBlock2USN" Text="Benutzername" VerticalAlignment="Top" Width="209" FontSize="25"/>
<TextBox Height="40" HorizontalAlignment="Left" Name="DetailViewTextBoxUsername" Text="{Binding Path=Username}" TextWrapping="Wrap" VerticalAlignment="Top" Width="360" FontSize="20"/>
<TextBlock Height="35" HorizontalAlignment="Left" Name="textBlock2WEB" Text="Website" VerticalAlignment="Top" Width="134" FontSize="25"/>
<TextBox Height="40" HorizontalAlignment="Left" Name="DetailViewTextBoxWebsite" Text="{Binding Path=Website}" TextWrapping="Wrap" VerticalAlignment="Top" Width="360" FontSize="20"/>
<TextBlock Height="35" HorizontalAlignment="Left" Name="textBlock2DEC" Text="Notizen/ Beschreibung" VerticalAlignment="Top" Width="322" FontSize="25"/>
<TextBox Height="80" HorizontalAlignment="Left" Name="DetailViewTextBoxDescription" Text="{Binding Path=Description}" TextWrapping="Wrap" VerticalAlignment="Top" Width="360" FontSize="20"/>
</StackPanel>
</Expander>
</DataTemplate>

Das ist das verwendete DataTemplate, das für jeden Eintrag verwendet wird.
<ListBox Height="460" HorizontalAlignment="Left" 
VerticalAlignment="Top" Width="360" Name="MainOverviewListBox"
ItemsSource="{Binding HeaderCollection}"
ItemTemplate="{StaticResource MainOverviewListBoxItemTemplate}"
SelectionChanged="MainOverviewListBox_SelectionChanged_1" />

Und das ist die ListBox.
Wie kann ich soetwas erreichen?
Ich wäre abermals für eine Antwort sehr dankbar.
08.02.2012
Simon Rühle 147 1 7
0
Also ich habe jetzte doch eine Lösung gefunden.
Man darf dem Expander keinen Namen geben, dann kann man das Objekt, das beim Auslösen mitübergeben wird, in ein System.Windows.Controls.Expander Objekt umwandeln und aus diesem den Header auslesen. Adressieren geht genauso.
11.02.2012
Simon Rühle 147 1 7

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH