DataGrid单元格编辑模式=双向

本文关键字:双向 模式 编辑 单元格 DataGrid | 更新日期: 2023-09-27 18:26:49

我有一个DataGrid,如下

 <DataGrid ItemsSource="{Binding Templates}" SelectedItem="{Binding SelectedTemplate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
    CanUserSortColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Templates" Binding="{Binding Path=., Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="*"/>
    </DataGrid.Columns>
</DataGrid>

有问题的两个属性如下

private ObservableCollection<string> _templates;
public ObservableCollection<string> Templates {
    get { return _templates; }
    set {
        if (_templates == value)
            return;
        _templates = value;
        RaisePropertyChanged("Templates");
    }
}
private string _selectedTemplate;
public string SelectedTemplate {
    get { return _selectedTemplate; }
    set {
        if (_selectedTemplate == value)
            return;
        _selectedTemplate = value;
        RaisePropertyChanged("SelectedTemplate");
    }
}

我希望从UI对上述DataGrid中的单元格执行Edit操作,并且绑定属性中必须有相应的更改。

现在,由于String类不实现INotifyPropertyChanged,在UI中编辑单元格不会反映属性中值的更改。那么,有人知道是否有解决方法,这样我就可以实现所需的功能吗?

DataGrid单元格编辑模式=双向

您在这里没有太多选择。。。创建一个具有string Template属性的TemplateModel类。使其实现INotifyPropertyChanged并更改以下内容:

  • TemplatesObservableCollection<TemplateModel>的类型
  • SelectedTemplateTemplateModel的类型
  • 绑定到{Binding Path=Template, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}