/ / Як пов'язати значення текстового поля з властивістю SelectedItem в ListBox - wpf, xaml, binding, textbox, listbox

Як прив'язувати значення текстового поля до властивості SelectedItem в ListBox - wpf, xaml, binding, textbox, listbox

На жаль, 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}" />