我有一个非常简单的CRUD应用程序,它可以在datagrid中显示数据库中的数据。这很好。我想在数据网格中有一个注释列,其中每一行都有一个文本框,用户可以在其中插入注释。问题是,显示数据的类中的属性未使用注释更新。 我可以为该列使用带有IsReadonly =“ False”的简单DataGridTextColumn。这实际上得到了注释,但是看起来很糟糕,用户必须双击该单元格才能输入它。使用文本框,验证看起来更加顺畅,用户只需单击一次即可输入,但此处的绑定无效。我尝试了DataGridTemplateColumn的不同变体,但似乎无法正确处理或找到有效的示例。 我想念什么?
<DataGridTemplateColumn Header="Comment" Width="120" IsReadOnly="False">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=UserComment}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox IsEnabled="true" Text="{Binding Path=UserComment}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
答案 0 :(得分:0)
在您的ViewModel中,不要忘记在更新值之后通知属性已更改。 其他视图不知道它必须同步。
An elegant way to implement INotifyPropertyChanged
一种基本方法是:
private string _userComment;
public string UserComment
{
get { return _userComment; }
set
{
_userComment = value;
PropertyChanged("UserComment");
}
}
private void PropertyChanged(string prop)
{
if( PropertyChanged != null )
{
PropertyChanged(this, new PropertyChangedEventArgs(prop);
}
}