У меня есть ListBox
, который отображает List<Item> Items
с элементом, являющимся обычным объектом. Элемент Foreach Я хочу, чтобы пользователь увидел ComboBox
с List<string> Options
в качестве источника с выбранным элементом, возвращающим свойство объекта. В окне списка я не имею никаких проблем с привязкой к отдельным свойствам Item, но как мне вернуться в DataContext, чтобы получить список моих опций?DataContext ComboBox Связывание внутри ListBox
View Модель задается как DataContext страницы в
class ViewModel
{
public ObservableCollection<string> Options { get; set; }
public ObservableCollection<Item> Items { get; set; }
}
Xaml
<ListBox x:Name="ItemsListBox" ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Height="50" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="ItemProperty1TB"
Text="{Binding Path=Property1, Mode=OneWay}"
Grid.Column="0"
/>
<ComboBox x:Name="OptionsCB"
SelectedItem ="{Binding ChosenOptions, Mode=TwoWay}"
ItemsSource="{Binding Path=DataContext.Options}"
Grid.Column="1"
PlaceholderText="Option"
/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Я попытался вырезать столько, сколько дополнительный код и получить читаемый пример.
How to bind to a source inside a ListBox different from the ItemsSource already specified Это использует AncestorType, который не существует?
ComboBox inside Listbox.ItemTemplate Binding problem Это связывает статический ресурс. Должен ли я помещать свои параметры в статический ресурс?
ElementName
выглядит многообещающим, но мой IDE рекомендует только элементы области видимости внутри ListBox ... НЕ ВЕРЬТЕ Visual Studio
я просто буду об этом все неправильно?
ViewModel должна иметь свойства, а не поля. Это реальный код? –
Нет, это не тот код, который я так быстро изменил. – JaredStroeb
Попробуйте 'ItemsSource =" {Binding Path = DataContext.Options, ElementName = ItemsListBox} "' –