0

I am using Windows Community Toolkit datagrid in my WinUI3 desktop application. It works ok but I can't make it editable in-place though in docs they mention it should work.

 <controls:DataGrid FrozenColumnCount="3" AutoGenerateColumns="False" IsReadOnly="False"
                    SelectionMode="Single"  ItemsSource="{Binding items}" >
        <controls:DataGrid.Columns>
        ...
        </controls:DataGrid.Columns>
</controls:DataGrid>

where

 private ObservableCollection<EditableRow> _items = new();
 public ObservableCollection<EditableRow> items
 {
     get => _items;
     set
     {
         SetProperty(ref _items, value, true);
         OnPropertyChanged(nameof(items));
     }
 }

and EditableRow implements IEditableObject interface. I think it is a binding issue, what could be wrong here?

demonplus
  • 5,613
  • 12
  • 49
  • 68
  • After testing, the DataGrid control also supports cell and row editing functionality in Winui3 by default as @AndrewKeepCoding said. Could you please show a minimal, reproducible sample? – YangXiaoPo-MSFT Nov 09 '22 at 01:28
  • **[DataGridEditingUnit](https://learn.microsoft.com/en-us/windows/communitytoolkit/controls/datagrid_guidance/editing_inputvalidation#enumerations)** enumeration specifies two editing levels, cell level and row level. You may try to make row's fields editable in case of your custom implementation. – YangXiaoPo-MSFT Nov 10 '22 at 06:21

1 Answers1

0

Columns are editable (IsReadOnly=false) by default. This works in my sample project.

<controls:DataGrid
    x:Name="DataGridControl"
    AutoGenerateColumns="False"
    IsReadOnly="False"
    ItemsSource="{x:Bind Items, Mode=OneWay}"
    SelectionMode="Single">
    <controls:DataGrid.Columns>
        <controls:DataGridTextColumn
            Binding="{Binding Id}"
            IsReadOnly="True" />
        <controls:DataGridTextColumn Binding="{Binding Title}" />
    </controls:DataGrid.Columns>
</controls:DataGrid>
Andrew KeepCoding
  • 7,040
  • 2
  • 14
  • 21