Wpf 将项添加到ObservableCollection时Datagrid未更新
我有一个客户实体,它有一组注释 我的视图中有一个DataGrid,它被数据绑定到我的Client.AuditableNotes集合,我可以看到数据库中已经存在的注释。但是,如果我将新的AuditableNote添加到集合中,它不会出现吗 My ClientEditViewModel的客户端属性具有以下内容:Wpf 将项添加到ObservableCollection时Datagrid未更新,wpf,data-binding,datagrid,observablecollection,Wpf,Data Binding,Datagrid,Observablecollection,我有一个客户实体,它有一组注释 我的视图中有一个DataGrid,它被数据绑定到我的Client.AuditableNotes集合,我可以看到数据库中已经存在的注释。但是,如果我将新的AuditableNote添加到集合中,它不会出现吗 My ClientEditViewModel的客户端属性具有以下内容: //Backing Field private Client _client; . . . //Property public Client Client { get { r
//Backing Field
private Client _client;
.
.
.
//Property
public Client Client
{
get { return _client; }
set
{
_client = value;
RaisePropertyChanged("Client");
}
}
//Upon my NoteEdit usercontrol returning control back to clienteditviewmodel
public void NoteEditFinished(AuditableNote note)
{
if (note != null)
{
note.AddedBy = _dbContext.SystemUsers.First();
if (note.AuditableNoteId == 0)
{
if (this.Client.AuditableNotes != null)
{
this.Client.AuditableNotes.Add(note);
}
else
{
List<AuditableNote> notes = new List<AuditableNote>();
notes.Add(note);
this.Client.AuditableNotes = notes;
}
}
else
{
AuditableNote existingNote = this.Client.AuditableNotes.Where(an => an.AuditableNoteId == note.AuditableNoteId).First();
existingNote = note;
}
}
}
//支持字段
私人客户;
.
.
.
//财产
公共客户端
{
获取{return\u client;}
设置
{
_客户=价值;
RaiseProperty变更(“客户”);
}
}
//在我的NoteEdit usercontrol将控件返回给ClientEdit ViewModel时
公共作废注释EditFinished(可审核注释)
{
如果(注意!=null)
{
note.AddedBy=_dbContext.SystemUsers.First();
如果(note.AuditableNoteId==0)
{
if(this.Client.AuditableNotes!=null)
{
this.Client.AuditableNotes.Add(note);
}
其他的
{
列表注释=新列表();
注:增加(注);
this.Client.AuditableNotes=注释;
}
}
其他的
{
AuditableNote existingNote=this.Client.AuditableNotes.Where(an=>an.AuditableNoteId==note.AuditableNoteId.First();
现有注释=注释;
}
}
}
我的数据网格定义如下:
<DataGrid Name="grdNotes" MinWidth="180"
ItemsSource="{Binding Client.AuditableNotes, Mode=TwoWay}"
AutoGenerateColumns="False"
Background="Transparent"
RowBackground="Transparent"
IsReadOnly="True"
SelectedItem="{Binding SelectedNote}"
HorizontalScrollBarVisibility="Auto"
DataContext="{Binding}">
<DataGrid.Columns>
<DataGridTemplateColumn
Header="Warning">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image x:Name="MyImage" Width="25" Height="20"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Warning}" Value="True">
<Setter Property="Source" TargetName="MyImage" Value="/Assets/Images/symbol_error.png"/>
</DataTrigger>
<DataTrigger Binding="{Binding Warning}" Value="False">
<Setter Property="Source" TargetName="MyImage" Value="/Assets/Images/symbol_information.png"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Note" Binding="{Binding Note, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="290"/>
<DataGridTextColumn Header="Added By" Binding="{Binding AddedBy, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
<DataGridTextColumn Header="Date Added" Binding="{Binding DateAdded, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="*"/>
</DataGrid.Columns>
</DataGrid>
DataContext=“{Binding}”
通常是毫无意义的,而且ItemsSource
不绑定回源,TwoWay
什么也不做。此外,客户机
类代码也很重要,而且绑定的集合肯定不能保证是可见的,您将其设置为一个普通的列表
,您期望什么…我期望什么???数据网格,以反映向集合中添加的项?