На жаль, XAML для мене нова, тому я заздалегідь вибачаюся, якщо звучить як нуб.
У мене є елементи в ListBox, динамічно додані / видалені / etc, він пов'язаний так:
<ListBox Name="missionList" ItemsSource="{Binding Mode=OneWay}" ItemTemplate="{DynamicResource missionLegTemplate}" SelectionChanged="missionList_SelectionChanged"/>
Об'єкти, які йому обов'язково мають, містяться в списку, який успадковується від ObservableList. Цей список - це мій DataContext, який встановлюється на початку програми:
public MainWindow()
{
InitializeComponent();
DataContext = new MissionList();
}
У мене є серія текстових полів, які призначені для використання як для відображення поточних значень властивостей об'єкта, так і для збереження їх, коли вони редагуються.
Прочитавши навколо, я отримую враженнящо мені потрібно встановити DataContext у межах текстових полів у поточний вибраний об'єкт у списку, але я не знаю, як отримати доступ до цього об'єкта за допомогою XAML.
Чи має це сенс? Заздалегідь дякую за допомогу!
Відповіді:
0 для відповіді № 1Я, мабуть, переміщу My MissionList в клас ViewModel разом із новою властивістю для SelectedMission, яка може бути пов'язана з SelectedItem ListBox.
Як приклад (не обов'язково робочий код):
public MainWindow()
{
InitializeComponent();
DataContext = new MainWindowViewModel();
}
public class MainWindowViewModel
{
public ObservableCollection<Mission> MissionList { ... }
public Mission SelectedMission { ... }
.
.
.
}
<ListBox ItemsSource="{Binding MissionList}" SelectedItem="{Binding SelectedMission}" />
<TextBox Text="{Binding Path=SelectedMission.SomeTextField, Mode=OneWay}" />