1

一部のデータのグリッドを表示する 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}"
                                  />

これは、データコンテキストの残りを修正した方法です

4

1 に答える 1

0

私はそれを成し遂げる方法を見つけましたが、これがそれを行うべき方法であるかどうかはわかりません

<Window.Resources>
    <CollectionViewSource Source="{Binding ClientNetworks}" x:Key="clientnetworks" />
</Window.Resources>

そしてコンボボックスに

<ComboBox ItemsSource="{Binding Source={StaticResource clientnetworks}}" DisplayMemberPath="Description" />
于 2013-08-01T11:48:15.777 に答える