У меня есть родительский пользовательский элемент управления, который содержит еще один элемент с именем TrainDetailsControl
.Контекст данных родительского пользовательского элемента управления установлен в класс ViewModel (см. Ниже).
<UserControl>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<ListBox ItemsSource="{Binding Trains}"
SelectedItem="{Binding SelectedTrain}"
DisplayMemberPath="Name"/>
<local:TrainDetailsControl Grid.Column="1" DataContext="{Binding SelectedTrain}"/>
</Grid>
</UserControl>
Что я делаю, это "передаю" выбранный поезд из списка в TrainDetailsControls
.Внутри этого пользовательского элемента управления я показываю детали выбранного объекта поезда.
<UserControl>
<StackPanel>
<TextBlock Text="{Binding Name}"/>
<TextBlock Text="{Binding Details}"/>
</StackPanel>
</UserControl>
Это ViewModel с общими переменными (это не полный код, просто чтобы дать вам представление).
public class TrainViewModel : ViewModelBase
{
public ObservableCollection<Train> Trains { get; }
= new ObservableCollection<Train>();
private Train selectedTrain;
public Train SelectedTrain
{
get { return selectedTrain; }
set { SetValue(ref selectedTrain, value); }
}
}
Это хорошо работает, так как, когда я выбираю элемент поезда из списка, его детали правильно отображаются в другом пользовательском элементе управления.Но мне интересно, можно ли получить доступ к переменным Name и Details из кода в TrainDetailsControl
.Будет ли контекст данных этого последнего пользовательского элемента управления совпадать с контекстом данных его родительского пользовательского элемента управления (т. Е. Класса модели представления)?