質問に非常に似ていますかと私の質問は、このフォーラムのここにあるWPFの親UserControlでDataGrid SelectedItemを公開します。 2つのUserControlがマスターディテールウィンドウで使用されているXAMLファイルがあります。最初のUserControlは、いくつかのウィジェットを保持するDataGridであり、2番目のUserControlは選択されたウィジェットの詳細情報を保持します。私はMVVMのパターンをユーザーにしようとしているので、DataGridのSelectionChangedイベントを処理するためにRoutedEventHandlerを使わないようにしています。私は、DataGridからselectedItemでDetail-info UserControlが入力されたかどうかをテストするRoutedEventHandlerを作成しました。だから私はそれが働いたことを証明した。ツールキットからSelectedItemを取得する方法MVVMパターンを使用してWPFのUserControlにあるDataGrid
これで、RoutedEventHandlerを削除し、SelectedItem Dependencyプロパティを使用して詳細情報を表示するUserControlに、DataGridの選択が変更されたときに何も表示されなくなりました。私のビューは変更を認識する必要があります。 Josh Smithの記事で、リストビューを使った例を紹介しています。 私はいくつかの投稿/ブログを読んだことがありますが、そのほとんどは答えを提供していないか、UserControlでDataGridを使用していません。
私のビューでは、私のウィンドウのDataContextをwidgetViewModelのCollectionを返すwindowViewModelに設定し、Detailウィジェット情報をwindowViewModel.SelectedItem依存プロパティに保持する同じウィンドウにGroupboxのDataConextを設定します。 //この変数が保持している
のvarのViewModel:私は2つのUserControlを含むウィンドウで、ここで
が....メインのコード
<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
the windowViewModel
this.DataContext = viewModel;
this.gBox.DataContext = viewModel.SelectedItem;
私はかなり長い間このことに苦労していますが、問題はまだ分かりません。