2

コンボボックスを表示する 1 つの列を持つデータグリッドがあります。現在、期待どおり、新しい行は既存の行の下に表示されます。

<grid> 
<DockPanel Grid.Column="0" Grid.Row="0">
        <TextBlock DockPanel.Dock="Top" Text="Role Groups"/>
        <DataGrid DockPanel.Dock="Bottom" Name="dgRoleGroups" AutoGenerateColumns="False" CanUserAddRows="True" CanUserDeleteRows="True" HorizontalAlignment="Left" ItemsSource="{Binding ListSecurityUserRoleGroup}">
            <DataGrid.Columns>
                <DataGridTemplateColumn Header="Role Group" Width="*">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <ComboBox ItemsSource="{Binding ListSecurityRoleGroup, 
                                RelativeSource={RelativeSource AncestorType=UserControl}}" 
                                      DisplayMemberPath="Description" SelectedValuePath="ID"  
                                      SelectedValue="{Binding RoleGroupID}”/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

            </DataGrid.Columns>
        </DataGrid>
    </DockPanel>
</Grid>

ListSecurityUserRoleGroup は次の ObservableCollection です。

public class tbl_SecurityUserRoleGroup_Row
{
    public int UserID  { get; set; }
    public int RoleGroupID { get; set; }
}

また、ListSecurityRoleGroup は次のリストです。

  public class tbl_Security_RoleGroup_Row 
{
    public int ID { get; set; }
    public string PublicID { get; set; }
    public string Description { get; set; }
}

私が持っている背後にあるコードで:

dgRoleGroups.DataContext = ListSecurityUserRoleGroup;
dgRoleGroups.ItemsSource = ListSecurityUserRoleGroup;

下の図は、最初の行のバインディングが機能していることを示しています。新しい行があり、その値を選択できます。

ここに画像の説明を入力

ただし、別の新しい行を取得できません。これが私が解決しようとしている問題です。

他の投稿を読むと、IEditableObject、INotifiyProperyChanged の領域に何かが欠けていると思われます。または、このデータグリッドに列が 1 つしかないため、コンボボックス SelectedChanged から何かをトリガーする必要がある可能性があります。空白行が表示されているかどうかを確認するなどそうでない場合は作成しますか?

私の問題に一致する投稿は見つかりませんでしたが、そこにあると確信しています...

データグリッドを含まない他のソリューションがあるかもしれませんが、これが機能したら、次のタスクは、そこで機能する必要があるコンボボックスの 2 列を含むデータグリッドです。

4

1 に答える 1