Binding Dictionary <string, List <customObject >> zu ListBox in WPF
Ich habe einDictionary<string, List<WritingMachine>>
wobei der Schlüssel der Hostname eines Computers ist, der auf einen Server schreibt, und der Wert eine Liste von WritingMachine-Objekten ist (siehe unten):
public class WritingMachine
{
public string HostName { get; set; }
public string Program { get; set; }
public string Login { get; set; }
public string Server { get; set; }
}
Ich versuche, das Wörterbuch an eine WPF-ListBox zu binden. Anzeigen des Hostnamens (des Wörterbuchschlüssels) und einer Zusammenfassung desWritingMachine
Liste, die diesem Schlüssel zugeordnet ist.
Ich habe Probleme beim Zugriff auf die Eigenschaften der einzelnenWritingMachine
Elemente in der Liste.
Hier ist meine XAML:
<ListBox x:Name="MachineListBox" Margin="10" Grid.Column="0" FontFamily="Consolas" ItemsSource="{Binding Path=MachineDictionary}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical" Margin="5">
<ContentPresenter Content="{Binding Key}" Margin="0,0,4,0"/>
<ItemsControl ItemsSource="{Binding Value}" Margin="10,0,0,0">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Dies führt zu einer Listbox, die so aussieht:
ffensichtlich ist das falsch, weil dieWritingMachine
Listenelemente geben nur das Standard-@ zurüToString
. Durch Überschreiben vonWritingMachine
'sToString
Ich kann den gewünschten Effekt erzielen (mehr oder weniger):
Aber das ist ein Mist ... Ich möchte in der Lage sein, auf die einzelnen Elementeigenschaften zuzugreifen und sie in Steuerelementen in meinem @ anzuordneListBox.ItemTemplate
usingContent="{Binding Value.Server}"
o.ä
Irgendwelche Ideen