Мой вопрос, если он очень похож на вопрос "Предоставление DataGrid SelectedItem в родительском UserControl в WPF", который находится здесь на этом форуме.
У меня есть XAML-файл, в котором есть два элемента UserControl, которые используются в окне master-detail. Первый UserControl - это просто DataGrid, который содержит некоторые виджеты, а второй содержит подробную информацию о выбранном виджете. Я пытаюсь использовать шаблон MVVM, поэтому я стараюсь избегать использования RoutedEventHandler для обработки события SelectionChanged объекта DataGrid. Я создал RoutedEventHandler, чтобы проверить, будет ли мой UserControl Detail-info заполнен selectedItem из DataGrid, и он это сделал. Итак, я доказал, что это сработало.
Теперь, после удаления RoutedEventHandler и продолжения использования свойства зависимостей SelectedItem, чтобы позволить UserControl, который отображает подробную информацию, ничего не отображается в этом UserControl при изменении выбора DataGrid. My View должен знать об изменениях. Я прочитал статью Джоша Смита, в которой он приводит пример с использованием списка.
Я прочитал довольно много постов / блогов, но большинство из них не дают ответа или не используют DataGrid в UserControl.
На мой взгляд, я устанавливаю DataContext моего окна в windowViewModel, который возвращает коллекцию widgetViewModel, и я также устанавливаю DataConext группового блока в том же окне, в котором содержится информация о виджете Detail, в свойство зависимостей windowViewModel.SelectedItem.
вот основной код
<UserControl.Resources>
<Style x:Key="WidgetItemStyle" TargetType="{x:Type toolkit:DataGridRow}">
<Setter Property="IsSelected" Value="{Binding Path=IsSelected, Mode=TwoWay}"/>
</Style>
</UserControl.Resources>
<Grid>
<toolkit:DataGrid
x:Name="dgWidgets"
DataContext="{StaticResource WidgetsList}"
ItemsSource="{Binding}"
SelectedItem="{Binding ElementName=WidgetsUserControl, Path=SelectedItem, Mode=TwoWay}"
SelectionUnit="FullRow"
SelectionChanged="dgWidgets_SelectionChanged"
IsSynchronizedWithCurrentItem="true"
ItemContainerStyle="{StaticResource WidgetItemStyle}"
>
<toolkit:DataGrid.Columns>
.... столбец defs
В окне, которое содержит два пользовательских элемента управления, которые у меня есть:
var viewModel // эта переменная содержит windowViewModel
this.DataContext = viewModel;
this.gBox.DataContext = viewModel.SelectedItem;
Я уже давно борюсь с этим и до сих пор не знаю, в чем проблема.