我有一个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中编辑单元格不会反映属性中值的更改。那么有没有人知道是否有解决方法,以便我可以实现所需的功能?
答案 0 :(得分:1)
您在此处没有太多选择...创建一个TemplateModel
类,其中包含string Template
属性。让它实现INotifyPropertyChanged
并更改以下内容:
Templates
到ObservableCollection<TemplateModel>
SelectedTemplate
到TemplateModel
{Binding Path=Template, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}