Вот такая картина
public class Config
{
public String Key { get; set; }
public String ValueConfig { get; set; }
}
public class ConfigTemplates : INotifyPropertyChanged
{
private String title;
private List<Config> configs;
public String Title
{
get => title;
set
{
title = value;
OnPropertyChanged(nameof(Title));
}
}
public List<Config> Configs
{
get => configs;
set
{
configs = value;
OnPropertyChanged(nameof(Configs));
}
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
public sealed class ApplicationViewModelContext : INotifyPropertyChanged
{
private ConfigTemplates selectedConfig;
public ObservableCollection<ConfigTemplates> Configs { get; set; }
public ConfigTemplates SelectedConfig
{
get => selectedConfig;
set
{
selectedConfig = value;
OnPropertyChanged(nameof(SelectedConfig));
}
}
public ApplicationViewModelContext()
{
Configs = new ObservableCollection<ConfigTemplates>()
{
new ConfigTemplates()
{
Title = "XXX",
Configs = new List<Config>()
{
new Config {Key = $"1", ValueConfig = $@"XXX1"},
new Config {Key = $"2", ValueConfig = $@"XXX2"},
new Config {Key = $"3", ValueConfig = $@"XXX3"}
}
}
};
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
private void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<ListBox Grid.Column="0" ItemsSource="{Binding Configs}" SelectedItem="{Binding SelectedConfig}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="5">
<TextBlock FontSize="18" Text="{Binding Path=Title}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<StackPanel Grid.Column="1" DataContext="{Binding SelectedConfig}">
<TextBlock Text="Selected Settings"/>
<TextBlock Text="Title"/>
<TextBox Text="{Binding Title, UpdateSourceTrigger=PropertyChanged}"/>
<-- НЕ работает --!>
<ListBox ItemsSource="{Binding Configs, UpdateSourceTrigger=PropertyChanged}"/>
</StackPanel>
</Grid>
как можно вывести данные Configs
<ListBox ItemsSource="{Binding Configs, UpdateSourceTrigger=PropertyChanged}"/>
То есть, слева отображается Title, при нажатии на него, справа должны отобразится данные из Configs .
Работает, Title отображается, но Configs отображаются не правильно.Как можно вывести Key = $"1", ValueConfig = $@"XXX1"

Title, содержащий просто строку, аConfigsэто некий список несвязанных сTitleобъектов. Как вы их связывать собираетесь я не пойму. Ну либо вы нам не пойми что скинули, ибо судя по XAML вы привязываетесь к одному списку -Confings. По поводу "Не правильно отображается" - а шаблон задать объекту? Вот у вас дваListBox, в первом вы переопределили шаблон, выведяTitle, а у второго кто будет? – EvgeniyZ Jul 25 '20 at 09:37ConfigTemplatesсодержит свойство Title и Configs. Соединяю я их черезObservableCollection<ConfigTemplates> Configsто есть Configs уже имеет и Title у которого есть список Configs. по сути мне нужно сделать что то типо этогоforeach (var config in Configs) { Console.WriteLine($"{config.Title}"); foreach (var configConfig in config.Configs) { Console.WriteLine($"{configConfig.Key} - {configConfig.ValueConfig}"); } }но в XAML – EugeneTM Jul 25 '20 at 09:52SelectedItemвыводить. – EvgeniyZ Jul 25 '20 at 09:53Titleимеет разные значения и где это в вопросе? Где там вообще что либо похожее на "правду"? Пожалуйста, отредактируйте вопрос, добавив в него все необходимое! По поводу "несколько значений" - делайте фильтр, самый лучший вариант. Ну либо да,SelectedItem, если оно изменилось, то формируете новую коллекцию, найдя все, к чему относитсяTitle(аляItems = Configs.Where(x=>x.Title == Selected.Title);. – EvgeniyZ Jul 25 '20 at 10:08