私はやや初心者なので、バインディングに関してはかなり不安定です。かなり長い間検索してきましたが、必要な場所にたどり着く例が見つかりません。
監視可能なコレクションにバインドされた DataGrid があります。これは、いくつかのプロパティを含むカスタム クラスのコレクションです (そのうちの 1 つは、それ自体が監視可能なコレクションです)。ユーザーがテキストを DataGrid に入力すると、Observable コレクションが更新されます。ユーザーが DataGrid の行を右クリックして、親の監視可能なコレクション内のアイテムの監視可能なコレクション プロパティから生成されたアイテムを含むコンテキスト メニューを取得できるようにしたいと考えています。
簡単にするために、私の DataGrid は InputItemList にバインドされています。これは、InputItem の Observable Collection です。
ObservableCollection(Of InputItem) としての InputItemList
InputItem には次のプロパティがあります: Part_Number as String Drawing_List as ObservableCollection(Of DrawingItem)
DrawingItem にはプロパティがあります: Revision as String Drawing_Path as String
DataGrid は ItemsSource を介して InputItemList にバインドされ、適切に機能しています。私の人生では、Drawing_List コレクションにバインドされた一連のメニュー項目を作成することはできません
??? を使用した XAML の簡易バージョンを次に示します。バインディングに関するヘルプが必要な場合:
<DataGrid x:Name="mw_DataGrid" ItemsSource="{Binding Source={StaticResource InputItemList}}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Part_Number}" CanUserReorder="False" CanUserResize="False" CanUserSort="False" Header=""/>
<DataGrid.Columns>
<DataGrid.ContextMenu>
<ContextMenu>
<MenuItem Header="Open Obsolete Revision" ItemsSource=????>
<MenuItem.ItemContainerStyle>
<Style>
<Setter Property="MenuItem.Header" Value="{Binding Path=Revision}"/>
<Setter Property="MenuItem.Command" Value="{StaticResource cmdOpenObsPDF}" />
<Setter Property="MenuItem.CommandParameter" Value="{Binding Path=Drawing_Path}" />
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
</ContextMenu>
</DataGrid.ContextMenu>
</DataGrid>