一部のデータのグリッドを表示する WPF のデータグリッドがあります。データは、次のプロパティを含む ViewModel から取得されます。
Public ReadOnly Property Devices() As List(Of Device)
Get
Return FDevices
End Get
.
Public ReadOnly Property ClientNetworks() As List(Of network)
Get
Return fnetwork
End Get
End Property
ビュー モデルを構築した後、両方のプロパティにデータが入力されます。Datagrid でプロパティを使用するには、次の XAML を使用します。
<DataGrid ItemsSource="{Binding Devices}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTemplateColumn Header="Customer" >
<DataGridTemplateColumn.CellTemplate >
<DataTemplate>
------------------ <TextBlock Text="{Binding ClientNetwork.Description}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
------------------> <ComboBox ItemsSource="{Binding ClientNetwork}" DisplayMemberPath="Description"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid>
これにより、編集時に説明を含むテキストボックスと文字列を含むコンボボックスが表示されます。
Datagrid の外では、コンボボックスは正常に動作します。これは Datagrid に ItemsSource が設定されているためであることはわかっていますが、それを機能させる方法が見つからないようです。コンボボックスのコードをいくつか変更してみましたが、今のところうまくいきません。
目標は、ユーザーがセルを編集してコンボボックスを表示できるようにすることです。そこから文字列を選択すると、対応する int がデータベースに保存されます。
更新 1
<ComboBox ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}},Path=DataContext.ClientNetworks}"
DisplayMemberPath="Description"
SelectedItem="{Binding ClientNetwork}"
/>
これは、データコンテキストの残りを修正した方法です