DataGrid单元格编辑Mode = TwoWay

时间:2014-10-17 09:44:06

标签: c# wpf datagrid

我有一个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中对上述Edit中的单元格执行DataGrid操作,并且必须在绑定属性中提供相应的更改。

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

1 个答案:

答案 0 :(得分:1)

您在此处没有太多选择...创建一个TemplateModel类,其中包含string Template属性。让它实现INotifyPropertyChanged并更改以下内容:

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