Dicionário de ligação <string, List <customObject>> para ListBox no WPF

eu tenho umDictionary<string, List<WritingMachine>> em que a chave é o nome do host de uma máquina que grava em um servidor e o valor é uma lista de objetos WritingMachine (mostrados abaixo):

public class WritingMachine
{
    public string HostName { get; set; }
    public string Program { get; set; }
    public string Login { get; set; }
    public string Server { get; set; }
}

Estou tentando vincular o dicionário a um WPF ListBox; exibindo o nome do host (chave do dicionário) e um resumo doWritingMachine lista associada a essa chave.

Estou tendo problemas para acessar as propriedades do indivíduoWritingMachine elementos dentro da lista.

Aqui está o meu XAML até agora:

<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>

Isso resulta em uma caixa de listagem que se parece com isso:

Obviamente, isso está errado porque oWritingMachine elementos da lista estão retornando o padrãoToString. SubstituindoWritingMachineéToString Posso obter o efeito que desejo (mais ou menos):

Mas essa é uma maneira péssima de fazer isso ... Quero poder acessar as propriedades individuais dos elementos e organizá-las em controles no meuListBox.ItemTemplate usandoContent="{Binding Value.Server}" ou similar.

Alguma ideia?

questionAnswers(2)

yourAnswerToTheQuestion