Привязка словаря <string, List <customObject >> к ListBox в WPF
у меня естьDictionary<string, List<WritingMachine>>
где ключ - это имя хоста компьютера, который пишет на сервер, а значение - это список объектов WritingMachine (показано ниже):
public class WritingMachine
{
public string HostName { get; set; }
public string Program { get; set; }
public string Login { get; set; }
public string Server { get; set; }
}
Я пытаюсь привязать словарь к WPF ListBox; отображение имени хоста (ключ словаря) и сводкаWritingMachine
список, связанный с этим ключом.
У меня проблемы с доступом к свойствам личностиWritingMachine
элементы в списке.
Вот мой 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>
Это приводит к появлению списка, который выглядит следующим образом:
Очевидно, это неправильно, потому чтоWritingMachine
элементы списка просто возвращают значение по умолчаниюToString
, ПереопределениемWritingMachine
«sToString
Я могу получить эффект, который я хочу (более или менее):
Но это дерьмовый способ сделать это ... Я хочу иметь возможность получить доступ к свойствам отдельных элементов и расположить их в элементах управления в моемListBox.ItemTemplate
с помощьюContent="{Binding Value.Server}"
или похожие.
Есть идеи?